为了账号安全,请及时绑定邮箱和手机立即绑定

使用'for'循环迭代字典

使用'for'循环迭代字典

鸿蒙传说 2019-05-27 16:33:11
使用'for'循环迭代字典我对以下代码感到有点困惑:d = {'x': 1, 'y': 2, 'z': 3} for key in d:     print key, 'corresponds to', d[key]我不明白的是这个key部分。Python如何识别它只需要从字典中读取密钥?keyPython中是一个特殊的词吗?或者它只是一个变量?
查看完整描述

4 回答

?
茅侃侃

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():

要自己测试,请将单词更改keypoop

对于Python 3.x,iteritems()已被简单替换items(),它返回由dict支持的类似集合的视图,iteritems()但更好。这也可以在2.7中获得viewitems()

该操作items()适用于2和3,但在2中它将返回字典(key, value)对的列表,这不会反映items()调用后发生的字典的更改。如果你想要3.x中的2.x行为,你可以打电话list(d.items())


查看完整回答
反对 回复 2019-05-27
?
呼如林

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)]

这为您提供了元组列表。当你像这样循环它们时,每个元组都被解压缩kv自动:

for k,v in d.items():
    print(k, 'corresponds to', v)

如果循环的主体只有几行,则在循环a时使用kv作为变量名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))


查看完整回答
反对 回复 2019-05-27
?
慕勒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)


查看完整回答
反对 回复 2019-05-27
  • 4 回答
  • 0 关注
  • 898 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信