2017-02-17 53 views
1

我试图合并以下列表字典如下:合并多个列表分为单辞典蟒蛇

resultant_dict = {} 
key = [101, 102, 103] 
values1 = [1,2,3] 
values2 = [4,5,6] 
values3 = [7,8,9] 

输出应该是:

output = {101: '147', 102: '258', 103: '369'} 

值是连击对方。有没有一种有效的方法来做到这一点?

在此先感谢!

+2

的值应该是'str'ings? –

+0

@WillemVanOnsem:是的,它应该是字符串 – Tamil

回答

4

这是相当奇怪的是,在所产生的字典中的值应该是str英格斯,但如果这是你想要的,你可以在一个单一的字典解析使用zipjoin

output = {k:''.join(str(x) for x in xs) for k,*xs in zip(key,values1,values2,values3)} 

,或

output = {k:''.join(str(x) for x in xs) for k,xs in zip(key,zip(values1,values2,values3))} 

使用zip(key,values1,values2,values3)我们创建了一个迭代即会产生以下形式的元组:

(101,1,4,7),(102,2,5,8),... 

现在我们用for k,*xs统一k每元组的第一个元素,以及剩余的元素被存储在xs(所以xs(1,4,7)用于第一元组)。

现在我们使用''.join(str(x) for x in xs)xs中的所有元素转换为字符串,然后我们将它们结合在一起。

最后我们有k:''.join(str(x) for x in xs)这是字典理解语法。

1

试试这个,

resultant_dict = {} 
key = [101, 102, 103] 
values1 = [1,2,3] 
values2 = [4,5,6] 
values3 = [7,8,9] 

for i in range(len(key)): 
    resultant_dict[key[i]]=str(values1[i])+str(values2[i])+str(values3[i]) 

print resultant_dict