С collections.Counter
:
>>> ctr = sum(map(Counter, d.values()), Counter())
>>> [ctr[x] for x in mylist]
[71, 11, 8, 12]
Или:
>>> [sum(e[k] for e in d.values()) for k in mylist]
[71, 11, 8, 12]
В случае, если в некоторых поддиктах могут отсутствовать ключи, просто используйте e.get(k, 0)
. Решению Counter
оно не нужно, оно по умолчанию предоставляет нули.
Хмм, поскольку вы теперь приняли решение результата dict
...
>>> dict(sum(map(Counter, d.values()), Counter()))
{'age': 71, 'answ1': 11, 'answ2': 8, 'answ3': 12}
Или, может быть, просто
>>> sum(map(Counter, d.values()), Counter())
Counter({'age': 71, 'answ3': 12, 'answ1': 11, 'answ2': 8})
Хотя у них может быть больше ключей, чем просто нужных, если в ваших данных их больше.