关于python:从2个列表创建字典

Make Dictionary From 2 List

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Map two lists into a dictionary in Python

尝试用两个列表制作字典,一个是键,一个是值,但我遇到了一个问题。这就是我目前为止所拥有的:

1
2
3
4
d={}
for num in range(10):
    for nbr in range(len(key)):
        d[num]=key[nbr]

假设我的键是从1到9的一个列表,值列表是[2,4,0,9,6,6,8,6,4,5],我如何分配它,使它像{0:2, 1:4, etc...}


快去营救!

1
2
3
4
5
6
>>> k = range(1,10)   # or some list or iterable of sorts
>>> v = [2,4,0,9,6,6,8,6,4,5]
>>> d = dict(zip(k,v))
>>> d
{1: 2, 2: 4, 3: 0, 4: 9, 5: 6, 6: 6, 7: 8, 8: 6, 9: 4}
>>>

有关详细信息,请参见python文档中的zip()内置函数。

注意,关于range()和"keys"列表。问题是"键是从1到9的列表"(即9个不同键),但值列表显示10个不同的值。这提供了讨论两个"细节"点的机会:

  • 上面代码段中的range()函数将生成1到9的范围,这是因为如果提供了起始值(1,此处),则始终包含起始值,而不会包含结束值(10,此处)。
  • zip()函数在包含最短iterable的最后一项的迭代之后停止(在我们的例子中,省略了列表的最后一个值"5")。

如果要专门映射索引,请使用enumerate内置函数而不是zip/range。

1
dict(enumerate([2,4,0,9,6,6,8,6,4,5]))


1
2
values = [2,4,0,9,6,6,8,6,4,5]
d = dict(zip(range(10), values))

1
mydict = dict(zip(range(10), [2,4,0,9,6,6,8,6,4,5]))

应该是这样的

1
dict(zip(a,b))