关于循环:对于a,b in c,d Python

For a, b in c, d Python

本问题已经有最佳答案,请猛点这里访问。

我有一个键列表和一个值列表,我想填写一个字典,如下所示:

1
2
 for key, value in listKeys, listValues:
     dict[key] = value

但是,我得到以下错误:

1
builtins.ValueError: too many values to unpack (expected 2)

您希望zip函数从多个输入中的每一个生成tuples值:

1
2
3
mydict = {}
for key, value in zip(listKeys, listValues):
     mydict[key] = value

也就是说,您可以跳过编写自己的循环的老生常谈,让dict构造函数来完成这项工作;它可以使用一个不可重复的键/值对来初始化自己,并完全避免python级别的循环:

1
mydict = dict(zip(listKeys, listValues))

或者,如果mydict是现有的非空dict方法,则使用update方法,该方法接受与构造函数相同的参数:

1
mydict.update(zip(listKeys, listValues))

旁注:我把变量重命名为mydict,因为隐藏像dict这样的内置名称是一个可怕的、可怕的想法。


使用zip同时遍历两个列表:

1
2
for key, value in zip(listKeys, listValues) :
    dict[key] = value


使用拉链:

for key, value in zip(listKeys, listValues): dict[key] = value