【问题标题】:Extracting values for a specific key from a list of dicts从字典列表中提取特定键的值
【发布时间】:2016-09-26 07:25:58
【问题描述】:

我想从 JSON 对象中提取特定值到专用列表。我的代码如下所示:

url2 = 'https://pqrsiem/api/reference_data/sets/clearsky_DOMAIN?fields=data(first_seen)'
request = urllib2.Request(url2,headers=headers)
response = urllib2.urlopen(request)    
parsed_response = json.loads(response.read().decode('utf-8'))
print(json.dumps(parsed_response, indent=4))

输出如下:

{"data": [
    {
        "first_seen": 1474468912626
    }, 
    {
        "first_seen": 1474468912694
    }, 
    {
        "first_seen": 1474468912762
    }, 
    ...
    ]
}

我想从"first_seen" 键中提取值并将它们放在一个列表中。 我该怎么做?

【问题讨论】:

标签: python json list dictionary


【解决方案1】:

如果您的 json 存储在 parsed_response 中:

for i in range (len(parsed_response["data"])):
    print json["data"][i]["first_seen"]

【讨论】:

  • 得到这个错误:print json["data"][i]["first_seen"] TypeError: 'module' object has no attribute 'getitem'
  • 当我输入 for i in range (len(parsed_response["data"])) 时效果很好: print parsed_response["data"][i]["first_seen"]
  • 对于 parsed_response["data"] 范围内的元素:打印元素["first_seen"]
【解决方案2】:

我想你可以试试这样的:

>>> import json
>>>
>>>
>>> json_data = '{"data": [{"first_seen": 1474468912626}, {"first_seen": 1474468912694}, {"first_seen": 1474468912762}]}'
>>> parsed_response = json.loads(json_data)
>>>
>>>
>>> for element in parsed_response['data']:
...     print element['first_seen']
...
1474468912626
1474468912694
1474468912762

【讨论】:

  • 我的 Jason 对象位于这个变量 parsed_response 中,如下所示:
  • parsed_response = json.loads(response.read().decode('utf-8'))
  • 因此我收到此消息:TypeError: expected string or buffer
  • 请看一下更新后的代码,它与@jmv 发布的基本相同,但复杂度要低一些。
猜你喜欢
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
  • 2023-01-24
  • 1970-01-01
  • 2017-10-23
  • 2020-11-10
  • 1970-01-01
相关资源
最近更新 更多