2017-02-17 50 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