开发者

Make Dictionary From 2 List [duplicate]

This question already has answers here: How can I make a dictionary (dict) from separate lists of keys and values? (21 answers) Closed 11 months ago.

Trying to make dictionary with 2 list one being the key 开发者_JS百科and one being the value but I'm having a problem. This is what I have so far:

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

Say my key is a list from 1 to 9, and value list is [2,4,0,9,6,6,8,6,4,5].

How do I assign so it that its like {0:2, 1:4, etc...}?


zip() to the rescue!

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

For more details, see zip() built-in function, in Python documentation.

Note, regarding range() and the list of "keys".
The question reads "key is a list from 1 to 9" (i.e. 9 distinct keys) but the value list shows 10 distinct values. This provides the opportunity to discuss two points of "detail":

  • the range() function in the snippet above will produce the 1 through 9 range, that is because the starting value (1, here), if provided, is always included, whereas the ending value (10, here) is never included.
  • the zip() function stops after the iteration which includes the last item of the shortest iterable (in our case, omitting '5', the last value of the list)


If you are mapping indexes specifically, use the enumerate builtin function instead of zip/range.

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


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


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


should be something like

dict(zip(a,b))
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜