Преобразовать словарь в список, в котором значения суммируются для любого повторяющегося ключа - PullRequest
0 голосов
/ 19 января 2019

Я новичок в python и работаю над заданием, в котором мне нужно преобразовать словарь в список, в котором значения суммируются для повторяющихся ключей.

Я использовал понимание словаря для преобразования словаря в сжатый, но изо всех сил пытался добавить условный оператор для возврата суммированных значений для повторяющихся ключей. Цените, если кто-то может направить меня в правильном направлении.

d1 = {'inds': [0, 3, 7, 3, 3, 5, 1], 'vals': [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]}

d2 = {k:v for k,v in zip(d1["inds"],d1["vals"])}
print(d2)

1 Ответ

0 голосов
/ 19 января 2019

Вы можете сделать это в одну строку следующим образом:

from itertools import compress  
d2 = dict((k, sum(compress(d1['vals'], (x == k for x in d1['inds'])))) for k in set(d1['inds']))

Однако, это не так уж и интуитивно понятно.Я надеюсь, что кто-то придумает лучший ответ:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...