如何在 python 中使用两个列表创建字典? [复制]

Posted

技术标签:

【中文标题】如何在 python 中使用两个列表创建字典? [复制]【英文标题】:how to create a dictionary using two lists in python? [duplicate] 【发布时间】:2013-02-17 10:48:56 【问题描述】:
x = ['1', '2', '3', '4']
y = [[1,0],[2,0],[3,0],[4,]]

我想创建一个字典,以便 x 和 y 值 对应如下:

1: [1,0], 2: [2,0]

等等

【问题讨论】:

这是作业吗?我们 SO 用户的家庭作业费用至少为 400 美元/小时,价格由用户自行决定。 【参考方案1】:

您可以使用 zip 功能: dict(zip(x, y))

>>> x = ['1', '2', '3', '4']
... y = [[1,0],[2,0],[3,0],[4,]]
>>> dict(zip(x, y))
0: '1': [1, 0], '2': [2, 0], '3': [3, 0], '4': [4]

【讨论】:

【参考方案2】:

在 python > 2.7 中,您可以使用字典理解:

>>> x = ['1', '2', '3', '4']
>>> y = [[1,0],[2,0],[3,0],[4,]]
>>> mydict = key:value for key, value in zip(x,y)
>>> mydict
'1': [1, 0], '3': [3, 0], '2': [2, 0], '4': [4]
>>> 

最好的答案已经给出了

dict(zip(x, y))

在 python itertools.izip 以防您使用大列表,因为 izip 返回一个迭代器。对于像您这样的小型列表,使用 izip 会过度杀伤力。但是请注意,itertools.izip 在 python 3 中消失了。在 python 3 中,zip 内置函数已经返回了一个迭代器,因此不再需要 izip

【讨论】:

【参考方案3】:

如果您对键是字符串没问题,那么快速简单的答案是dict(zip(x,y))。否则,使用dict(zip(map(int,x),y))

【讨论】:

【参考方案4】:

您可以使用itertools.izip 来完成此操作。

from itertools import izip
x = ['1', '2', '3', '4']
y = [[1,0],[2,0],[3,0],[4,]]
dict(izip(x, y))

如果您的 Python 风格是 3.x,那么您可以使用 itertools.zip_longest 来做同样的事情。

from itertools import zip_longest
x = ['1', '2', '3', '4']
y = [[1,0],[2,0],[3,0],[4,]]
dict(zip_longest(x, y))    

【讨论】:

那么 izip 有什么问题? 我已经将此问题标记为完全重复,但我不知道为什么人们对这个答案投了反对票。它与这个高度up 投票的similar answer 几乎相同。 可能是“简单胜于复杂” @WesleyBaugh 好点。但请注意,答案来自五年前的 2008 年。 2010 年的 py2.7 中包含了字典理解,而 dict(zip()) 的答案是 imho 是最好的,获得了 x5 多票并且是被选中的人 @joaquin 使用字典推导并没有改变这样一个事实,即 py2.7 中的 izip 在处理大型字典时仍然更高效。否决工具提示说“这个答案没用”。事实上,这个答案很有用。

以上是关于如何在 python 中使用两个列表创建字典? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中实现一个自定义的列表或字典

如何在 Python 中将两个列表组合成字典? [复制]

python中如何将两个列表组合成字典,并存放于一个新字典中

Python:如何从熊猫数据框创建字典? [复制]

python 从两个列表创建字典

如何使用一个键将多个列表值创建到python中的字典中?