有人可以解释Python如何理解这个key
变量吗?如果key
未在其他任何地方定义,为什么这样做?
tweet = {}
tweet['text'] = "#Python rocks!"
tweet['id'] = 1293827492
tweet['user'] = {}
tweet['user']['screen_name'] = "Linus__Torvalds"
tweet['user']['id'] = 829817283
tweet['media'] = {}
tweet['media']['hashtags'] = ["#Python"]
for key in tweet:
print "%s => %s" % (key, tweet[key])
我已经看到key
变量也改为其他内容(例如dict_key
)以使其更具可读性,但是我仍然不了解Python如何理解我所问的内容在到达打印行时解析。它如何知道实际上key
和tweet[key]
是什么?
答案 0 :(得分:0)
阅读教程section on dicts。 (在此之前阅读所有内容也会很好。)然后阅读以下部分中的第一个示例,它类似于您的代码。 (我建议您更改代码以遵循示例,但使用value
代替v
。
您可以使用所需的任何名称作为目标名称,该名称会反复绑定到由iterable产生的对象。您使用key
,其中是dict键的标准名称。我不认为dict_key
更好。
在您的代码中,名称key
被绑定到不同的键,例如id
,media
或text
,每次迭代都没有特定的顺序。名称绑定就像做一个assigment语句,key = 'id'
或其他什么。我希望这会有所帮助。
答案 1 :(得分:0)
for
循环是一种赋值:for x in y: ...
通过获取y
的迭代器,然后在分配后为迭代器返回的每个元素重复循环体来工作。它到x
。
dict
的迭代器只返回密钥,因此根据
dict
tweet = {}
tweet['text'] = "#Python rocks!"
tweet['id'] = 1293827492
tweet['user'] = {}
tweet['user']['screen_name'] = "Linus__Torvalds"
tweet['user']['id'] = 829817283
tweet['media'] = {}
tweet['media']['hashtags'] = ["#Python"]
for
循环等同于
key = 'text'
print "%s => %s" % (key, tweet[key])
key = 'id'
print "%s => %s" % (key, tweet[key])
key = 'user'
print "%s => %s" % (key, tweet[key])
key = 'media'
print "%s => %s" % (key, tweet[key])
您还可以将for
循环视为以下while
循环的优化版本,您需要在其中明确使用迭代器:
i = iter(tweet)
while True:
try:
key = next(i)
except StopIteration:
break
print "%s => %s" % (key, tweet[key])