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))
精彩评论