Finding mean of a values in a dictionary without using .values() etc
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
import numpy as np
np.mean(list(dict.values()))
If you use numpy:
import numpy as np
np.array(list(dict.values())).mean()