Создание списков Python отображаемых значений из ключей в списке списков - PullRequest
0 голосов
/ 17 июля 2011

У меня есть 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 ]

2 голосов
/ 17 июля 2011

Попробуйте это:

>>> [[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 голос
/ 17 июля 2011

В случае, если вы найдете, что лямбда-выражения легче читать, чем синтаксис понимания списка:

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

(Лично я бы сказал "кратко до степени нечитаемости", но я позволю вам принять решение.)

0 голосов
/ 17 июля 2011

Попробуйте это:

[[mymap[k] for k in sublist] for sublist in mapkeys]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...