以下代码使我有些困惑:
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print key, 'corresponds to', d[key]
我不明白的是key
部分。 Python如何识别只需要从字典中读取密钥? key
在Python中是一个特殊的词吗? 还是仅仅是一个变量?
#1楼
for .. in ..
-syntax中使用for .. in ..
字典中进行迭代时,它总是在键上进行迭代(可以使用dictionary[key]
来访问值)。
要遍历键值对,在Python 2 for k,v in s.iteritems()
中for k,v in s.items()
,在Python 3 for k,v in s.items()
。
#2楼
key
只是一个变量名。
for key in d:
只会循环遍历字典中的键,而不是键和值。 要遍历键和值,可以使用以下命令:
对于Python 2.x:
for key, value in d.iteritems():
对于Python 3.x:
for key, value in d.items():
要进行自我测试,请将单词key
更改为poop
。
对于Python 3.x, iteritems()
已替换为简单的items()
,它返回了由dict支持的类似set的视图,就像iteritems()
但效果更好。 在2.7中也可以通过viewitems()
。
操作items()
将同时适用于2和3,但是在2中它将返回字典的(key, value)
对的列表,该列表将不反映对items()
调用后字典的更改。 如果要在3.x中使用2.x行为,可以调用list(d.items())
。
#3楼
这是一个非常常见的循环习惯用法。 in
是一个运算符。 有关何时使用for key in dict
以及何时必须使用for key in dict.keys()
请参阅David Goodger的Idiomatic Python文章(归档副本) 。