从2列表制作字典

时间:2009-11-24 21:48:35

标签: python list dictionary

  

可能重复:
  Map two lists into a dictionary in Python

尝试制作字典,其中2个列表是键,1个是值,但我遇到了问题。这就是我到目前为止所做的:

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...}

5 个答案:

答案 0 :(得分:12)

zip()救援!

>>> 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() built-in function

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

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

答案 1 :(得分:6)

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

应该是

dict(zip(a,b))