Advertisement
Advertisement

## How to sum all the values in a dictionary?

### Question

Let's say I have a dictionary in which the keys map to integers like:

``````d = {'key1': 1,'key2': 14,'key3': 47}
``````

Is there a syntactically minimalistic way to return the sum of the values in `d`—i.e. `62` in this case?

2017/10/07
1
249
10/7/2017 1:56:46 AM

### Accepted Answer

As you'd expect:

``````sum(d.values())
``````
2019/09/23
491
9/23/2019 8:51:02 PM

In Python 2 you can avoid making a temporary copy of all the values by using the `itervalues()` dictionary method, which returns an iterator of the dictionary's keys:

``````sum(d.itervalues())
``````

In Python 3 you can just use `d.values()` because that method was changed to do that (and `itervalues()` was removed since it was no longer needed).

To make it easier to write version independent code which always iterates over the values of the dictionary's keys, a utility function can be helpful:

``````import sys

def itervalues(d):
return iter(getattr(d, ('itervalues', 'values')[sys.version_info>2])())

sum(itervalues(d))
``````

This is essentially what Benjamin Peterson's `six` module does.

2015/06/21

Sure there is. Here is a way to sum the values of a dictionary.

``````>>> d = {'key1':1,'key2':14,'key3':47}
>>> sum(d.values())
62
``````
2012/06/16

``````d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)
``````

you can do it using the for loop

2018/07/12

I feel `sum(d.values())` is the most efficient way to get the sum.

You can also try the reduce function to calculate the sum along with a lambda expression:

``````reduce(lambda x,y:x+y,d.values())
``````
2019/01/08

sum(d.values()) - "d" -> Your dictionary Variable

2019/03/08

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Email: [email protected]