从2列表制作字典

Jac*_*ack 2 python dictionary list

可能重复:将
两个列表映射到Python中的字典中

试图制作字典,其中2个列表是关键,1个是值,但我遇到了问题.这是我到目前为止:

d={}
for num in range(10):
    for nbr in range(len(key)):
        d[num]=key[nbr]
Run Code Online (Sandbox Code Playgroud)

说我的密钥是一个从1到9的列表,值列表是[2,4,0,9,6,6,8,6,4,5]我如何分配所以它就像它{0:2, 1:4, etc...}

mjv*_*mjv 12

拉链()救援!

>>> 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}
>>>
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅Python文档中的zip()内置函数.

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

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


小智 6

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

dict(enumerate([2,4,0,9,6,6,8,6,4,5]))
Run Code Online (Sandbox Code Playgroud)

  • 很难理解为什么你需要创建一个使用键范围的字典,除非你把它传递给不能使用列表的东西. (2认同)