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

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

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

等等

4

4 回答 4

34

您可以使用 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]}
于 2013-03-03T06:35:15.070 回答
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]}
>>> 

还是已经给出了最好的答案

字典(zip(x,y))

在 python <= 2.7itertools.izip中,您可以使用大列表作为izip返回迭代器。对于像您这样的小型列表,使用izip将是矫枉过正。但是请注意,在 python 3 中itertools.izip消失了。在 python 3 中,zip内置函数已经返回一个迭代器,因此izip不再需要。

于 2013-03-03T06:35:40.973 回答
3

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

于 2013-03-03T06:35:51.980 回答
2

您可以使用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))    
于 2013-03-03T06:35:38.673 回答