2012-12-21 154 views
-2

所以我有這樣的對象列表:詞典在Python恆定按鍵字典

['bob', 'tob', 'mom'], ['tom', 'apa'], ['cat'] 

,我想創建詞典的詞典是這樣的:

{ 
    {0: 'bob', 1: 'tob', 2: 'mom'}, 
    {0: 'tom', 1: 'apa'}, 
    {0: 'cat'} 
} 

什麼pythonic的方式來完成這件事?謝謝!

+2

這不是字典的法律詞典:有沒有鍵(例如,'{0:'bob',1:'tob',2:'mom'}'')的鍵是什麼?) –

+0

鍵由數字組成,如目標中所示。你什麼意思? – Mike

+3

'bob'的關鍵是一個數字。 '{0:'bob',1:'tob',2:'mom'}'(也就是* outer * dictionary)的關鍵是什麼? –

回答

3

看起來您只是想將listlist s轉換爲setdict s,其中索引映射到該值。

那麼,你不能這樣做,因爲set不能容納不可取的值,如dict s。但是你可以很容易地將它轉換成那些dictslist

每個list可以通過dict(enumerate(l))轉換成dict。這給你一個可以用與原始list完全相同的方式使用的列表(因此d[0]返回與l[0]相同的東西),這看起來像你想要的。

要將它們放在一起列表中,只需使用列表理解。

>>> l=[['bob','tob','mom'],['tom','apa'],['cat']] 
>>> d=[dict(enumerate(i)) for i in l] 
>>> d 
[{0: 'bob', 1: 'tob', 2: 'mom'}, {0: 'tom', 1: 'apa'}, {0: 'cat'}] 
+0

非常感謝!你理解我這個措辭不佳的問題,並給了我一個完美的答案。好老師! – Mike

0
index_as_key = dict(enumerate(['bob','tob','mom'])) 

如果你只是想列表項的索引,而你遍歷列表中,沒有必要創建一箇中間字典:

for i, item in enumerate(['bob','tob','mom']): 
    # do something