python - Python 中使用 json.dumps 时出现 KeyError

标签 python xml json urllib2

我正在尝试使用 JSON 文件列表中的字典。数据导入良好且读取良好。我一生都不知道如何打印“member_id”键。我只想打印“member_id”号码列表。我最初使用 json.loads,然后切换到 json.dumps。任何帮助将不胜感激。

import urllib2
import json
nyt_api_key = '72c9a68bbc504e91a3919efda17ae621%3A7%3A70586819'
url= 'http://api.nytimes.com/svc/politics/v3/us/legislative/congress/113'
json_obj = urllib2.urlopen(url)
data = json.load(json_obj)
data2 = json.dumps(data, sort_keys=True, indent=True, skipkeys = True)

print data2

来自print data2的输出:(列表不断延伸,因此被截断。列表底部有一个右括号。所以它是列表中的字典。)

 "positions": [
 {
  "dw_nominate": "0.466", 
  "member_id": "A000055", 
  "vote_position": "Yes"
 }, 
 {
  "dw_nominate": "0.995", 
  "member_id": "A000367", 
  "vote_position": "Yes"
 }, 
 {
  "dw_nominate": "0.666", 
  "member_id": "A000369", 
  "vote_position": "Yes"
 }, 

来自print data2['member_id']的输出,如果使用“positions”、“vote_position”等,输出是相同的:

Traceback (most recent call last):
  File "/Users/Owner/PycharmProjects/untitled2/1", line 9, in <module>
    print data2["positions"]
TypeError: string indices must be integers, not str

来自print data的输出:

u'positions': [{u'dw_nominate': u'0.466', u'vote_position': u'Yes', u'member_id': u'A000055'}, {u'dw_nominate': u'0.995', u'vote_position': u'Yes', u'member_id': u'A000367'}, {u'dw_nominate': u'0.666', u'vote_position': u'Yes', u'member_id': u'A000369'}

来自print data['positions']的输出:

print data["positions"] KeyError: 'positions'

来自print.data(keys)的输出:

[u'status', u'results', u'copyright']

Process finished with exit code 0

最佳答案

我只想打印“member_id”号码列表。

因此,您需要循环遍历 positions 并访问每个字典中的 member_id:

data ={"positions": [
 {
  "dw_nominate": "0.466",
  "member_id": "A000055",
  "vote_position": "Yes"
 },
 {
  "dw_nominate": "0.995",
  "member_id": "A000367",
  "vote_position": "Yes"
 },
 {
  "dw_nominate": "0.666",
  "member_id": "A000369",
  "vote_position": "Yes"
 }]}

print([d["member_id"] for d in data["results"]["positions"]])
['A000055', 'A000367', 'A000369']

如果你看API documentation每个 json 响应都有示例。

关于python - Python 中使用 json.dumps 时出现 KeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27694046/

相关文章:

c# - 以 JSON 形式返回 Entity Framework 结果

python - 从 numpy 数组中删除 "nan"值

python - Sqlalchemy pyodbc 无 DNS URL 连接字符串似乎不起作用

python - Pandas :从行中的每个元素中减去行均值

python - 迷失在 XML 和 Python 中

java - applicationContext.xml 文件有什么问题

json - 如何在 Node JS 中读取文本文件并将其作为 JSON 对象返回?

Python Reportlab 单位cm和inch的翻译方式不同

PHP -> 如何检查 XML 是否为空

javascript - 动态更新从 AJAX 查询返回的 JSON 数组