2011-07-17 46 views
0

我有一個Python字典如下從按鍵在列表中

mymap={'java':40,'haskell':60,'ruby':50,'python':70,'scala':30,'lisp':80,'scheme':75} 

列表創建映射值的Python列表我已經把在子列表

mapkeys = [['haskell','java'],['lisp','python'],['scala','scheme'],['ruby']] 

現在的關鍵,我需要創建這些鍵的值列表的列表如下

[[60,40],[80,70],[30,75],[50] ] 

我試過使用列表理解,但未能產生任何結果

回答

2

嘗試這種情況:

>>> [[mymap[k] for k in l] for l in mapkeys] 
[[60, 40], [80, 70], [30, 75], [50]] 

對於非嵌套列表,刪除括號和反向for語句:

>>> [mymap[k] for l in mapkeys for k in l] 
[60, 40, 80, 70, 30, 75, 50] 
+0

對於非嵌套列表,遍歷'總和(映射鍵,[])'也是一種選擇。 –

0

嘗試這種情況:

[[mymap[k] for k in sublist] for sublist in mapkeys] 
1

在情況下你會發現lambda表達式比列表理解語法更容易閱讀:

map(lambda l: map(mymap.get,l), mapkeys) 

(就個人而言,我會說「簡潔,以不可讀性的點」,但我會告訴你讓你的心。)

+0

謝謝Ulrich ..使用lambda從未想過 – markjason72