【发布时间】:2025-12-11 21:10:02
【问题描述】:
我正在尝试在 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
【问题讨论】:
-
json.dumps返回string,因此出现异常。试试print data['member_id'] -
json.dumps产生一个 string 这就是您分配给data2的内容(来自对象data,这显然是一个字典列表)。你想完成什么?! -
@AkashShende 看起来
data是一个字典列表,所以data['member_id']也会失败——data[0]['member_id']之类的东西可能没问题,但不知道 OP 试图做什么完成它本质上只是一个猜测:-) -
@AlexMartelli,我只想打印“member_id”号码列表。
-
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["member_id"]或print data ["u'member_id"]我仍然得到一个 KeyError。 @PadraicCunningham 下面提到的 for 循环返回TypeError: string indices must be integers, not str。我还没有用尽那个解决方案,还在尝试一些事情。 @AlexMartelli @Akash 申德