rank | vote | view | answer | url |
---|---|---|---|---|
22 | 2236 | 3143856 | 11 | url |
使用 for 来迭代字典的原理
有点不理解下面的代码:
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print key, 'corresponds to', d[key]
我有点不理解 key
的部分. Python 是怎么识别出只需要从字典中读取 key? key
是 Python 里的关键词还是只是一个简单的变量?
key
就是一个变量名.
for key in d:
上面的语句紧紧会循环字典中的 key ,而不是 key 和 value.如果需要循环 key 和 value, 你可以用下面的方法:
Python 2.x:
for key, value in d.iteritems():
Python 3.x:
for key, value in d.items():
你可以自己试一下用其他变量替换 key
.
在 Python3 里 iteritems()
简化成了 items()
, 它能像 iteritems()
一样返回一个基于字典本身的像 set 一样的 view, 但是做了更多的优化.在 Python 2.7 里和 viewitems()
的效果是一样的.
在 Python2 和 Python3 里都有 items()
, 但是在 2 中只会返回一个 list, 它的结构是这种 (key, value)
键值对的形式, 它不能反映出在字典调用 items()
后做出的改变.所以在 Python3.x 中需要使用 list(d.items())
才能与之等价.