如何制作两个元组来制作字典?

时间:2017-06-22 18:29:08

标签: python dictionary tuples

我的第一个想法是写一个交互者,或者做一些列表理解。但是,就像我在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 }

2 个答案:

答案 0 :(得分:26)

元组是 iterables 。您可以使用zip将两个或更多个iterables合并为两个或更多元素的元组。

字典可以用2元组的可迭代构造,所以:

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

这会产生:

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

请注意,如果两个iterables的长度,那么zip将从其中一个元组耗尽时停止。

您可以 - @Wondercricket说 - 使用 fillvalue izip_longest(或zip_longest中的):a当其中一个iterables耗尽时使用的值:

from itertools import izip_longest

dict(izip_longest(y,x,fillvalue=''))

因此,如果密钥迭代首先耗尽,那么所有剩余的值将映射到空字符串(因此只存储最后一个)。如果值iterable首先耗尽,那么所有剩余的键将在空字符串上映射。

答案 1 :(得分:5)

您可以使用词典理解:

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