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

时间:2013-03-03 06:30:49

标签: python list dictionary

x = ['1', '2', '3', '4']
y = [[1,0],[2,0],[3,0],[4,]]

我想创建一个字典,以便x和y值 会像这样对应:

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

4 个答案:

答案 0 :(得分:23)

你可以使用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]}

答案 1 :(得分:7)

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

>>> 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会过度使用。但请注意,itertools.izip在python 3中消失了。在python 3中,zip内置函数已经返回迭代器,因此不再需要izip

答案 2 :(得分:2)

快捷方便的答案是dict(zip(x,y)),如果您对键是字符串的确定。否则,请使用dict(zip(map(int,x),y))

答案 3 :(得分:1)

您可以使用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))