Python在嵌套字典中排序

2024-10-02 20:30:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用TwitchAPI,我有一个大型嵌套字典。我如何筛选?在

>>> r = requests.get('https://api.twitch.tv/kraken/streams/sibstlp', headers={'Accept': 'application/vnd.twitchtv.v2+json'})

然后:

^{pr2}$

有趣的是:

>>> r.text
# large nested dictionary starting with
#u'{"stream":{"_links":{"self":"https://api.twitch.tv/kraken/streams/sibstlp"},

有人知道为什么r.text和print r.text不同吗?在

我怎样通过词典把我要找的信息找出来? 我正在尝试:

>>> r.text[stream]
NameError: name 'stream' is not defined

谢谢


Tags: texthttpsapistreamget字典tvrequests
2条回答

首先,您尝试访问字符串中的元素,而不是字典。r.text只返回请求的纯文本。要从requests对象获取正确的字典,请使用r.json()。在

当您尝试r.json()[stream]时,Python认为您正在字典中查找与变量{}中的键对应的值。你没有这样的变数。您需要的是与文本字符串“stream”的键对应的值。因此,r.json()['stream']应该为您提供下一个嵌套字典。如果需要该url,则r.json()['stream']['_links']['self']应该返回它。在

关于print r.text和{}不同的原因,请参阅Ashwini的答案。在

print r.text返回对象的str版本,而r.text返回对象的repr版本。在

>>> x = 'foo'
>>> print x     #equivalent to : print str(x)
foo
>>> print str(x)
foo
>>> x           #equivalent to  : print repr(x)
'foo'
>>> print repr(x)
'foo'

字典的键是字符串,如果使用r.text[stream],那么python将查找名为stream的变量,如果找不到它,它将引发NameError。在

只需使用:r.text['stream']

演示:

^{pr2}$

相关问题 更多 >