如何使用两个元组生成一个字典?

23 浏览
0 Comments

如何使用两个元组生成一个字典?

这个问题已经有了答案:

如何从分离的键和值列表中创建字典(dict)?

我的第一反应是编写一个迭代器,或者可能进行一些列表推导。但是,像我在python中编写的每个5-10行方法一样,通常可以指向标准库中的一个调用来完成相同的操作。

如何从两个元组xy转换为一个字典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日
0
0 Comments

您可以使用字典推导式:

>>> {y[i]:x[i] for i,_ in enumerate(x)}
{'a': 1, 'b': 2, 'c': 3}

0
0 Comments

元组是可迭代的。您可以使用zip将两个或多个可迭代对象合并为两个或多个元素的元组。

一个字典可以由2元组的可迭代对象构建,所以:

#          v values
dict(zip(y,x))
#        ^ keys

将生成:

>>> dict(zip(y,x))
{'c': 3, 'a': 1, 'b': 2}

请注意,如果两个可迭代对象长度不同,则zip将在其中一个元组耗尽的时候停止。

您可以像@Wondercricket所说的那样,使用带有fillvalueizip_longest(在中为zip_longest):

from itertools import izip_longest
dict(izip_longest(y,x,fillvalue=''))

所以如果键的可迭代对象首先用完,所有剩余的值将在此处映射为空字符串(因此仅存储最后一个)。如果值的可迭代对象首先用完,则所有剩余的键将在此处映射为空字符串。

0