如何使用Python中的两个列表创建字典?

how to create a dictionary using two lists in python?

本问题已经有最佳答案,请猛点这里访问。
1
2
x = ['1', '2', '3', '4']
y = [[1,0],[2,0],[3,0],[4,]]

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

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


您可以使用zip函数:dict(zip(x, y))

1
2
3
4
>>> 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]}

在python>2.7中,可以使用dict理解:

1
2
3
4
5
6
>>> 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<=2.7中,可以使用itertools.izip,以防在izip返回迭代器时使用大列表。对于像你这样的小名单来说,使用izip将是多余的。但是请注意,在python 3中不支持itertools.izip。在python 3中,zip内置函数已经返回迭代器,因此不再需要izip


快速而简单的答案是dict(zip(x,y)),如果您对键是字符串表示满意的话。否则,使用dict(zip(map(int,x),y))


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

1
2
3
4
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来做同样的事情。

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