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 |
- 谢谢,我很感激你的快速反应
- 如果您看到一个非常常见的带有流行规范副本的问题,您可以投票或用该副本标记问题的结束。
- 为什么投反对票?!我的声誉不足以做到这一点,而投票否决也无法提供这些信息,一条评论就足够了。请取消投票。@虎鹰3号
- 您可以将要关闭的问题标记为具有15个信誉的副本。
- 谢谢你提供的信息,但我的观点是投票给其他人的答案只是"惩罚"他们不知道这个信息,这是不好的。我们都是这里的学习者。@虎鹰3号
- 是的,看起来有人否决了你的答案。不管是谁做的,肯定是觉得它没用(正如工具提示所建议的那样)。然而,投票是匿名的,所以我们可能永远不知道是谁这样投票。
使用拉链:
for key, value in zip(listKeys, listValues): dict[key] = value
- 谢谢,我很感激你的快速反应
- 如果您看到一个非常常见的带有流行规范副本的问题,您可以投票或用该副本标记问题的结束。