使用'for'循环迭代字典我对以下代码感到有点困惑:d = {'x': 1, 'y': 2, 'z': 3} for key in d:
print key, 'corresponds to', d[key]我不明白的是这个key部分。Python如何识别它只需要从字典中读取密钥?keyPython中是一个特殊的词吗?或者它只是一个变量?
4 回答
![?](http://img1.sycdn.imooc.com/533e4d470001a00a02000200-100-100.jpg)
茅侃侃
TA贡献1842条经验 获得超21个赞
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支持的类似集合的视图,iteritems()
但更好。这也可以在2.7中获得viewitems()
。
该操作items()
适用于2和3,但在2中它将返回字典(key, value)
对的列表,这不会反映items()
调用后发生的字典的更改。如果你想要3.x中的2.x行为,你可以打电话list(d.items())
。
![?](http://img1.sycdn.imooc.com/533e4c3300019caf02000200-100-100.jpg)
呼如林
TA贡献1798条经验 获得超3个赞
迭代dict
迭代通过其键没有特定的顺序,你可以在这里看到:
编辑:( 在Python3.6中不再是这种情况,但请注意,它还不能保证行为)
>>> d = {'x': 1, 'y': 2, 'z': 3} >>> list(d)['y', 'x', 'z']>>> d.keys()['y', 'x', 'z']
对于您的示例,最好使用dict.items()
:
>>> d.items()[('y', 2), ('x', 1), ('z', 3)]
这为您提供了元组列表。当你像这样循环它们时,每个元组都被解压缩k
并v
自动:
for k,v in d.items(): print(k, 'corresponds to', v)
如果循环的主体只有几行,则在循环a时使用k
和v
作为变量名dict
是很常见的。对于更复杂的循环,使用更具描述性的名称可能是个好主意:
for letter, number in d.items(): print(letter, 'corresponds to', number)
养成使用格式字符串的习惯是个好主意:
for letter, number in d.items(): print('{0} corresponds to {1}'.format(letter, number))
![?](http://img1.sycdn.imooc.com/545863aa00014aa802200220-100-100.jpg)
慕勒3428872
TA贡献1848条经验 获得超6个赞
key
只是一个变量。
对于Python2.X:
d = {'x': 1, 'y': 2, 'z': 3} for my_var in d: print my_var, 'corresponds to', d[my_var]
... 或更好,
d = {'x': 1, 'y': 2, 'z': 3} for the_key, the_value in d.iteritems(): print the_key, 'corresponds to', the_value
对于Python3.X:
d = {'x': 1, 'y': 2, 'z': 3} for the_key, the_value in d.items(): print(the_key, 'corresponds to', the_value)
添加回答
举报
0/150
提交
取消