2013-05-13 64 views
3

我具有相同的長度和字典的2所列出如何增加對應從列表來蟒字典鍵元素和值分別

list1 = ['hello', 'goodbye', 'no', 'yes', 'if you say so'] 
list2 = ['a', 'b', 'c', 'd; e; f', 'g'] 
listDict = {} 

我想對應的值作爲鍵和值分別添加,因此字典的輸出應該是這樣的(和順序應該保持不變)

listDict = {'hello':'a', 'goodbye':'b', 'no':'c', 'yes':'d; e; f', 'if you say so':'g'} 

我試圖

for words in list1: 
    for letters in list2: 
     listDict[words]=[letters] 

但這給出了不正確的結果(我無法理解它們)。我怎麼能得到如上所述的輸出?

回答

4

使用zip()

>>> list1 = ['hello', 'goodbye', 'no', 'yes', 'if you say so'] 
>>> list2 = ['a', 'b', 'c', 'd; e; f', 'g'] 
>>> dict(zip(list1,list2)) 
{'if you say so': 'g', 'yes': 'd; e; f', 'hello': 'a', 'goodbye': 'b', 'no': 'c'} 

'yes' 'if you say so'被認爲是一個字符串,用,將它們分開:

>>> 'yes' 'if you say so' 
'yesif you say so' 

使用collections.OrderedDict中保持秩序:

>>> from collections import OrderedDict 
>>> OrderedDict(zip(list1,list2)) 

OrderedDict([('hello', 'a'), ('goodbye', 'b'), ('no', 'c'), ('yes', 'd; e; f'), ('if you say so', 'g')]) 
+0

我需要保持它的順序,但是因爲我必須以相同的順序打印鍵和值...所以'你好':'a','再見':'b'等等.. – user2353608 2013-05-13 10:51:54

+0

@ user2353608我更新了我的解決方案。 – 2013-05-13 10:54:14

+0

對不起,我是初學者,但答案怎麼不再像字典?我希望它看起來像{'hello':'a','goodbye':'b'...} – user2353608 2013-05-13 11:02:37

1
list1 = ['hello', 'goodbye', 'no', 'yes' 'if you say so'] 
list2 = ['a', 'b', 'c', 'd; e; f', 'g']  
listDict = dict(zip(list1, list2)) 
相關問題