Как использовать лямбду для многократного значения словаря? - PullRequest
0 голосов
/ 04 мая 2018

, поэтому я встретил вопрос во время изучения Python. скажем, у меня есть словарь

a = {'Andy':[2,4,6,8],'Bryce':[1,2,3], 'Charile': [3,6], 'David':[10], 'Elaine' :[5,10]}

как я могу использовать лямбду, чтобы умножить 2 на каждое число в и вернуть новый dict?

я пытался new_a= list(map(lambda x: x * 2, a.values())) однако, он возвращает список вроде [[2, 4, 6, 8, 2, 4, 6, 8], [1, 2, 3, 1, 2, 3], [3, 6, 3, 6], [10, 10], [5, 10, 5, 10]]

новый диктат, который я хочу, - это:

new_a =  {'Andy':[4,8,12,16],'Bryce',[2,4,6], 'Charile': [6,12], 'David':[20], 'Elaine' :[10,20]}

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Сохраняйте это простым.

Изменение существующего диктата:

for key, value in a.items():
  a[key] = [2 * item for item in value]

Создание нового dict с обновленными значениями:

b = dict()
for key, value in a.items():
  b[key] = [2 * item for item in value]

Использование словарного понимания

b = {key: [2 * item for item in value] for key, value in a.items()}

Понятия не имею, для чего здесь Лямбда. Это сделать гораздо проще без.

0 голосов
/ 04 мая 2018

Вы можете попробовать:

a = {'Andy':[2,4,6,8],'Bryce':[1,2,3], 'Charile': [3,6], 'David':[10], 'Elaine' :[5,10]}

new_a = dict(list((key, list(map(lambda i:i*2, value))) for key, value in a.items()))

Выход:

{'Andy': [4, 8, 12, 16], 'Bryce': [2, 4, 6], 'Charile': [6, 12], 'David': [20], 'Elaine': [10, 20]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...