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

18 投票
4 回答
46448 浏览
提问于 2025-04-17 17:44
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]}

撰写回答