2013-08-21 95 views
0

我正在尋找一種將列表轉換爲字典的簡單方法。我有一個簡單的列表:Python 3:將列表轉換爲字典

leet =['a','4','b','l3','c','(','d','[)','e','3','g','6','l','1','o','0','s','5','t','7','w','\/\/'] 

我想輕鬆地轉換爲字典。我一直在使用defaultdict嘗試,但我不太明白它在做什麼(我發現在前面的回答驗證碼):

>>> from collections import defaultdict 
>>> dic = defaultdict(list) 
>>> for item in leet: 
    key ="/".join(item[:-1]) 
    dic[key].append(item[-1]) 


>>> dic 
defaultdict(<class 'list'>, {'\\:/:\\': [], '': ['a', '4', 'b', 'c', '(', 'd', 'e', '3', 'g', '6', 'l', '1', 'o', '0', 's', '5', 't', '7', 'w'], 'l': ['3'], '[': [')'], '\\///\\': ['/']}) 

最後,我想從一個txt文件中的數據讀取(線行)轉換爲列表並轉換爲簡單程序其餘部分的字典。 我正在尋找一個簡單的方法來實現這一目標。

感謝

+4

當你說「轉換成字典「 - 你是什麼意思?什麼會成爲關鍵,什麼會成爲價值?列表是否包含[[key,value,key,value,...]或其他結構?你想計數的項目? –

+2

也許給一個真正簡單的例子輸入和預期的輸出,所以我們知道你想要什麼... – Sheena

+0

對不起,我沒有說清楚。我只是想直接轉移[key:value,key:value,..] – user2127168

回答

2

不知道你會沿着正確的路徑以defaultdict,轉換爲一個字典通過分組成對,然後使用dict.get以滿足時,沒有一個匹配的密鑰:

leet =['a','4','b','l3','c','(','d','[)','e','3','g','6','l','1','o','0','s','5','t','7','w','\/\/'] 

lookup = dict(zip(*[iter(leet)] * 2)) 
text = 'how are you?' 
blah = ''.join(lookup.get(ch, ch) for ch in text) 
# h0\/\/ 4r3 y0u? 
+0

謝謝,這正是我想要做的。只是一個小問題 - 上面的代碼返回'\/\ /'爲'w',但是我給了我'\\/\\ /' - 任何想法? – user2127168

+0

@ user2127168它不使用'print blah',你會看到額外的黑斜線純粹是爲了表現的目的,並不在你的字符串中......可能是一個想法,使'r' \/\ /'使其更明顯,反斜槓不是用於轉義char –

+0

哎呀!我應該意識到這一點 - 謝謝!仍在學習! – user2127168

-1
components_dict = dict(((lambda y: y['id'])(y), y) for y in components) 

組件對象如下:

{"id":1234, "name":"xxx"}