我有一个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] ]
我尝试使用列表理解,但未能产生任何结果
答案 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]