【问题标题】:Python JSON list to get data and retrieve column namePython JSON 列表获取数据并检索列名
【发布时间】:2017-02-26 11:53:45
【问题描述】:

我是 Python 初学者。我正在访问一个返回列表字典的历史金属价格 API。列表中的第一项是列名,其余的是位于这些列标题下的数据。

我正在尝试编写代码来返回记录中所有日期的日期和现金买家值。

这是我到目前为止所写的。我尝试了几种字典和列表方法,但都无法正常工作。

此帖子的 URL 被故意限制为 1 行 (rows=1),并剥夺了我的 API 密钥。但是,此 URL 对任何人都有效,但在没有 API 密钥的情况下会受到速率限制:

import urllib
import json
url = "https://www.quandl.com/api/v1/datasets/LME/PR_CU.json?rows=1"
response = urllib.urlopen(url)
data = json.loads(response.read())

这是一个示例输出:

{
"code": "PR_CU",
"column_names": [
    "Date",
    "Cash Buyer",
    "Cash Seller & Settlement",
    "3-months Buyer",
    "3-months Seller",
    "15-months Buyer",
    "15-months Seller",
    "Dec 1 Buyer",
    "Dec 1 Seller",
    "Dec 2 Buyer",
    "Dec 2 Seller",
    "Dec 3 Buyer",
    "Dec 3 Seller"
],
"data": [
    [
        "2016-10-14",
        4672.0,
        4672.5,
        4691.0,
        4692.0,
        4730.0,
        4740.0,
        null,
        null,
        null,
        null,
        null,
        null
    ]
],
"description": "LME Official Prices i
"display_url": null,
"errors": {},
"frequency": "daily",
"from_date": "2012-01-03",
"id": 19701916,
"name": "Copper Prices",
"premium": false,
"private": false,
"source_code": "LME",
"source_name": "London Metal Exchange"
"to_date": "2016-10-14",
"type": null,
"updated_at": "2016-10-17T07:05:00.54
"urlize_name": "Copper-Prices"
}

【问题讨论】:

    标签: python json python-2.7 web-services getjson


    【解决方案1】:

    一种方法是获取“日期”和“缓存购买者”列的位置,然后遍历 JSON 的 数据 部分。

    在我的示例中,我将从 JSON 加载的字典命名为字典:

    # Get the columns and the data part of the response dictionary
    columns = dictionary['column_names']
    data = dictionary['data']
    
    # This is done in case that the columns are not always in the same order
    # if they are, you can just hardcode the values to 0 and 1
    index_of_date = columns.index('Date')
    index_of_cash_buyer = columns.index('Cash Buyer')
    
    # As data section is a list of lists we need to
    # iterate through lists of data and collect the desired values
    for piece_of_data in data:
        date = piece_of_data[index_of_date]
        cash_buyer = piece_of_data[index_of_cash_buyer]
        print date, cash_buyer
    

    【讨论】:

    • 谢谢!这回答了我的问题,非常感谢!
    猜你喜欢
    • 2021-08-03
    • 2023-03-19
    • 2014-04-13
    • 1970-01-01
    • 2019-08-11
    • 2019-01-15
    • 1970-01-01
    • 2012-01-29
    • 2018-11-30
    相关资源
    最近更新 更多