理解Python词典

时间:2017-12-03 17:57:11

标签: python

有人可以解释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如何理解我所问的内容在到达打印行时解析。它如何知道实际上keytweet[key]是什么?

2 个答案:

答案 0 :(得分:0)

阅读教程section on dicts。 (在此之前阅读所有内容也会很好。)然后阅读以下部分中的第一个示例,它类似于您的代码。 (我建议您更改代码以遵循示例,但使用value代替v

您可以使用所需的任何名称作为目标名称,该名称会反复绑定到由iterable产生的对象。您使用key,其中是dict键的标准名称。我不认为dict_key更好。

在您的代码中,名称key被绑定到不同的键,例如idmediatext,每次迭代都没有特定的顺序。名称绑定就像做一个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])