Skip to content Skip to sidebar Skip to footer

How Do I Fill My Dictionary Values With The Values From Another Dictionary Where Their Keys Are The Same?

I have one dictionary (dictDemCLass) with a key but the values are all 0 and I plan to fill them with the values from another dictionary (dictAvgGrade). I need to do so where the

Solution 1:

You can use itertools.groupby to groups items in dictAvgGrade by "class" (i.e. junior, senior, etc.). Then you can compute the average for each group and add it to dictDemClass.

So for the example your posted, it can be something like the following:

from itertools import groupby

dictAvgGrade = {('Jeffery', 'male', 'junior'): 0.7749999999999999, ('Able', 'male', 'senior'): 0.8200000000000001, ('Don', 'male', 'junior'): 0.7974999999999999, ('Will', 'male', 'senior'): 0.7975000000000001}
dictDemClass = {'junior': 0, 'senior': 0, 'sophomore': 0}

defget_class(x):
    return x[0][2]

for k, g in groupby(sorted(dictAvgGrade.items(), key=get_class), key=get_class):
    group = list(g)
    class_avg = sum(x[1] for x in group)/len(group)
    dictDemClass[k] = class_avg

print(dictDemClass)

Output

{'senior': 0.8087500000000001, 'junior': 0.7862499999999999, 'sophomore': 0}

Solution 2:

if you know that dictAvgGrade is always a subset of dictDemClass you can do this

dictDemClass.update(dictAvgGrade)

otherwise

if you are using python3 you can do something like this

forkeyin (dictDemClass.keys() & dictAvgGrade.keys()):
    dictDemClass[key] = dictAvgGrade[key]

if you are using python2 you can do something like this

forkeyin (set(dictDemClass.keys()) & set(dictAvgGrade.keys())):
    dictDemClass[key] = dictAvgGrade[key]

Post a Comment for "How Do I Fill My Dictionary Values With The Values From Another Dictionary Where Their Keys Are The Same?"