How can I take two tuples to produce a dictionary?
本问题已经有最佳答案,请猛点这里访问。
我的第一个想法是写一个交互程序,或者做一些列表理解。但是,就像我用python编写的每一个5-10行方法一样,通常有人可以将我指向标准库中的一个调用来完成相同的任务。
我怎样才能从两个元组(
1 2 3 4 5 6 7 8 9 10 | x = ( 1, 2, 3 ) y = ( 'a', 'b', 'c') z = { } for index, value in enumerate(y): z[value] = x[index] print z # { 'a':1, 'b':2, 'c':3 } |
元组是iterable。可以使用
字典可以用两个元组组成,因此:
1 2 3 | # v values dict(zip(y,x)) # ^ keys |
这就产生:
1 2 | >>> dict(zip(y,x)) {'c': 3, 'a': 1, 'b': 2} |
注意,如果两个iterables的长度不同,那么
正如@wondercricket所说,您可以使用EDOCX1(或python-3.x中的EDOCX1(或EDOCX1)(3))和
1 2 3 | from itertools import izip_longest dict(izip_longest(y,x,fillvalue='')) |
因此,如果首先耗尽key iterable,那么剩下的所有值都将映射到空字符串上(因此只存储最后一个值)。如果首先耗尽了iterable值,则此处所有剩余的键都将映射到空字符串上。
您可以使用字典理解:
1 2 | >>> {y[i]:x[i] for i,_ in enumerate(x)} {'a': 1, 'b': 2, 'c': 3} |