对于a,b in c,d Python

Jet*_*lex 0 python dictionary loops for-loop

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

 for key, value in listKeys, listValues:
     dict[key] = value
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

builtins.ValueError: too many values to unpack (expected 2)
Run Code Online (Sandbox Code Playgroud)

Sha*_*ger 7

你想要zip功能,以使发电机tuple值以每次多个输入的:

mydict = {}
for key, value in zip(listKeys, listValues):
     mydict[key] = value
Run Code Online (Sandbox Code Playgroud)

也就是说,你可以跳过编写自己的循环的困难,让dict构造函数完成工作; 它可以采用可迭代的键/值对来初始化自己,并完全避免Python级别循环:

mydict = dict(zip(listKeys, listValues))
Run Code Online (Sandbox Code Playgroud)

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

mydict.update(zip(listKeys, listValues))
Run Code Online (Sandbox Code Playgroud)

旁注:我将您的变量重命名为mydict,因为阴影内置名称dict是一个可怕的,可怕的想法.