I have a dictionary. I want to calculate average of values for each key and print result so that the result shows key and associated average. The following code calculates mean
You were on the right track. You just needed a dictionary comprehension instead of a list comp.
_dict = {22: [1, 0, 0, 1], 23: [0, 1, 2, 1, 0], 24: [3, 3, 2, 1, 0]}
mean = {key : float(sum(values)) / len(values) for key, values in _dict.iteritems()}
print(mean)
{22: 0.5, 23: 0.8, 24: 1.8}
Notes:
.iteritems
is replaced with .items
in python3dict
as a variable name, it shadows the builtin class with the same name.Update for Python 3.4+
>>> from statistics import mean # Python 3.4+
>>> d = {22: [1, 0, 0, 1], 23: [0, 1, 2, 1, 0], 24: [3, 3, 2, 1, 0]}
>>> {k:mean(v) for k,v in d.items()}
{22: 0.5, 23: 0.8, 24: 1.8}
>>>
Don't use a list comprehension. Use a dictionary comprehension to calculate the average of each list. You can also from __future__ import division
to avoid having to use float
:
>>> from __future__ import division
>>> d = {22: [1, 0, 0, 1], 23: [0, 1, 2, 1, 0], 24: [3, 3, 2, 1, 0]}
>>> mean = {k: sum(v) / len(v) for k, v in d.iteritems()}
>>> mean
{22: 0.5, 23: 0.8, 24: 1.8}