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