| 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()) 才能与之等价.