I have a dictionary that looks like this
x = {'a': 2,
'b': 3,
'c': 3,
'd': 5,
'e': 4,
'f': 3,
'g': 5,
'h': 9}
while another dictionary that looks like this:
y = {'a': 'A',
'b': 'B',
'c': 'B',
'd': 'B',
'e': 'D',
'f': 'C',
'g': 'C',
'h': 'D'}
what I want to do is to create a new dictionary that looks like this:
z = {'A': 2,
'B': 11,
'C': 8,
'D': 13}
so basically “group by” the elements in x according to the values in y and sum them. for instance, in y ‘b’,’c’,’d’, belong to ‘B’ so in z we will have B = 3+3+5 = 11,
Advertisement
Answer
z = {}
for k, v in y.items():
z.setdefault(v, 0)
z[v] += x[k]
print(z)
Prints:
{'A': 2, 'B': 11, 'D': 13, 'C': 8}