Skip to content Skip to sidebar Skip to footer

Finding Mean Of A Values In A Dictionary Without Using .values() Etc

I have a dictionary that looks like: G={'E': 18.0, 'D': 17.0, 'C': 19.0, 'B': 15.0, 'A': 0} I have to find the mean of the values e.g. mean(18,17,19,15,0) using a simple for loop

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"