Как умножить элементы списка в словаре - PullRequest
0 голосов
/ 31 октября 2018

У меня есть два словаря, как указано ниже, мне нужно умножить каждый элемент в списке словарей на соответствующий элемент списка другого словаря и распечатать результат. Мне удалось умножить один список. Как мне сделать его динамичным?

dict1 = {0: [1, 1, 0, 1, 1, 0], 1: [1, 0, 1, 1, 1, 0]}

dict2 = { 0: [16, 0, 2, 0, 0, 0], 1: [15, 0, 0, 0, 1, 0]}

result = { 0: [16, 0, 0, 0, 0, 0], 1:[15, 0, 0, 0, 1, 0]}

from operator import mul
result = list( map(mul, dict1[0], dict2[0]) )

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Добро пожаловать, пользователь стека,

Вы можете использовать DICT COMPREHENSIONS, чтобы сделать это. Почтовый индекс не требуется.

from operator import mul

dict1 = {0: [1, 1, 0, 1, 1, 0], 1: [1, 0, 1, 1, 1, 0]}
dict2 = {0: [16, 0, 2, 0, 0, 0], 1: [15, 0, 0, 0, 1, 0]}

result = {key: list(map(mul, dict1[key], dict2[key])) for key in dict1.keys() }

result
{0: [16, 0, 0, 0, 0, 0], 1: [15, 0, 0, 0, 1, 0]}

PEP 274 - Понимание Dict https://www.python.org/dev/peps/pep-0274/

Это выглядит примерно так: Для каждого ключа в списке ключей создайте словарь из ключа и списка (map (mul, dict1 [key], dict2 [key]))

Надеюсь, это поможет

0 голосов
/ 31 октября 2018

Вы можете сжать каждый из списков и использовать их как:

result = {i :[x*y for x, y in zip(dict1[i], dict2[i])] for i in dict1.keys()}

Предполагается, что dict1 и dict2 имеют одинаковые ключи

...