Finding Mean Of A Values In A Dictionary Without Using .values() Etc
Solution 1:
If you use numpy:
import numpy as np
np.array(list(dict.values())).mean()
Solution 2:
To do this with a "simple for loop", using your constraints against using the dict methods:
G = {'E': 18.0, 'D': 17.0, 'C': 19.0, 'B': 15.0, 'A': 0}
count = 0
_sum = 0
for key in G:
count += 1
_sum += G[key]
print('this is the mean: ', _sum/count)
If you're supposed to avoid dict methods, clearly this is an academic exercise.
Without that constraint:
The statistics
module in the standard library has a mean
method, which would be my first thought (as the standard library does not require third party packages.):
>>> G={'E': 18.0, 'D': 17.0, 'C': 19.0, 'B': 15.0, 'A': 0}
>>> from statistics import mean
>>> mean(G[k] for k in G)
13.8
Third party packages like numpy and pandas have objects with a mean
method:
>>> from numpy import array
>>> array([G[k] for k in G]).mean()
13.8
>>> from pandas import Series
>>> Series([G[k] for k in G]).mean()
13.8
If we allow ourselves to use the values()
method, this gets a little simpler with iterable unpacking. For some reason the other answers violate that condition, so I figure I should show the more efficient way of doing it:
>>> Series([*G.values()]).mean()
13.8
Solution 3:
import numpy as np
np.mean(list(dict.values()))
Solution 4:
Iteration over a dictionary iterates over its keys. Try just using for key in G
, and then using G[key]
appropriately instead of values
.
Alternatively, use the iteritems()
method of the dictionary to get key, value
pairs from G, i.e.:
d=[float(sum(values)) / len(values) for key, values in G.iteritems()]
(For the record, your actual method of computing a mean doesn't look right to me, but you may as well fix the iteration problem first).
Solution 5:
In Python 3.4 upwards there is a very clear way:
import statistics
numbers = [G[key] for key in G]
mean_ = statistics.mean(numbers)
Post a Comment for "Finding Mean Of A Values In A Dictionary Without Using .values() Etc"