如何用两个列表在Python中创建字典?
x = ['1', '2', '3', '4']
y = [[1,0],[2,0],[3,0],[4,]]
我想创建一个字典,这样x和y的值就能对应起来,像这样:
1: [1,0], 2: [2,0]
等等
4 个回答
3
简单来说,如果你可以接受字典的键是字符串,可以用 dict(zip(x,y))
这个方法。否则,如果你想把键变成整数,就用 dict(zip(map(int,x),y))
。
7
在 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 2.7 及以下版本中,如果你在处理大列表,可以使用 itertools.izip
,因为 izip
返回的是一个迭代器。对于像你这样的小列表,使用 izip
就有点过于复杂了。不过要注意的是,itertools.izip
在 Python 3 中已经不再使用。在 Python 3 中,内置的 zip
函数已经可以直接返回一个迭代器,所以 izip
就不需要了。
36
你可以使用 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]}