从列表列表中的键创建映射值的python列表

时间:2011-07-17 14:59:51

标签: python list dictionary

我有一个python dict,如下所示

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

我把密钥放在子列表中

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

现在,我需要创建一个列表,列出这些键的值,如下所示

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

我尝试使用列表理解,但未能产生任何结果

3 个答案:

答案 0 :(得分: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]

答案 1 :(得分:1)

如果您发现lambda表达式比列表理解语法更容易阅读:

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

(就个人而言,我会说“简洁到不可读”,但我会让你下定决心。)

答案 2 :(得分:0)

试试这个:

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