Hello this is using python panda
from collections import defaultdict Unknown_dict = defaultdict(list) for j, k in zip(my_unknown_id, my_unknown_intensity): Unknown_dict[j].append(k) print(Unknown_dict)
From the above code what I get is
defaultdict(<class 'list'>, {'ABC': [123, 345, 678], 'JIK': [456, 789], 'KIL': [100], 'JAL': [200], 'HON': [300]})
From this list I want to actually get the mean of the values inside the class list. For example for ABC I want to get (123+345+678)/3 and for JIK (456+789)/2.
I tried getting the mean of the values but I found out inside lists we cannot change values. I’m not sure if I got it wrong or does anyone know how to get the mean inside a list?
Advertisement
Answer
You can get the mean with a comprehension –
d = defaultdict(list, {'ABC': [123, 345, 678], 'JIK': [456, 789], 'KIL': [100], 'JAL': [200], 'HON': [300]}) mean_d = {k: sum(v) / len(v) for k, v in d.items()} # {'ABC': 382.0, 'JIK': 622.5, 'KIL': 100.0, 'JAL': 200.0, 'HON': 300.0}
If you want to add these mean values back into the original dict –
for k in mean_d: d[k].append(mean_d[k])
Output
defaultdict(list, {'ABC': [123, 345, 678, 382.0], 'JIK': [456, 789, 622.5], 'KIL': [100, 100.0], 'JAL': [200, 200.0], 'HON': [300, 300.0]})