如何使用两个元组生成一个字典?
如何使用两个元组生成一个字典?
这个问题已经有了答案:
我的第一反应是编写一个迭代器,或者可能进行一些列表推导。但是,像我在python中编写的每个5-10行方法一样,通常可以指向标准库中的一个调用来完成相同的操作。
如何从两个元组x
和y
转换为一个字典z
?
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 }
admin 更改状态以发布 2023年5月22日
元组是可迭代的。您可以使用zip
将两个或多个可迭代对象合并为两个或多个元素的元组。
一个字典可以由2元组的可迭代对象构建,所以:
# v values dict(zip(y,x)) # ^ keys
将生成:
>>> dict(zip(y,x)) {'c': 3, 'a': 1, 'b': 2}
请注意,如果两个可迭代对象长度不同,则zip
将在其中一个元组耗尽的时候停止。
您可以像@Wondercricket所说的那样,使用带有fillvalue
的izip_longest
(在python-3.x中为zip_longest
):
from itertools import izip_longest dict(izip_longest(y,x,fillvalue=''))
所以如果键的可迭代对象首先用完,所有剩余的值将在此处映射为空字符串(因此仅存储最后一个)。如果值的可迭代对象首先用完,则所有剩余的键将在此处映射为空字符串。