## 问题：如何对字典中的所有值求和？

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

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?

## 回答 0

``sum(d.values())``

As you’d expect:

``````sum(d.values())
``````

## 回答 1

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

``````import sys

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

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

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[0]>2])())

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

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

## 回答 2

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

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
``````

## 回答 3

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

``````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

## 回答 4

``reduce(lambda x,y:x+y,d.values())``

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())
``````

## 回答 5

sum（d.values（））-“ d”->您的字典变量

sum(d.values()) – “d” -> Your dictionary Variable

## 回答 6

phihag的答案（和类似的答案）在python3中不起作用。

``````d = {'key1': 1,'key2': 14,'key3': 47}
sum(list(d.values()))``````

phihag’s answer (and similar ones) won’t work in python3.

For python 3:

``````d = {'key1': 1,'key2': 14,'key3': 47}
sum(list(d.values()))
``````

Update! There are complains that it doesn’t work! I just attach a screenshot from my terminal. Could be some mismatch in versions etc.

## 回答 7

``````  d = {'data': 100, 'data2': 200, 'data3': 500}
total = 0
for i in d.values():
total += i``````

You could consider ‘for loop’ for this:

``````  d = {'data': 100, 'data2': 200, 'data3': 500}
total = 0
for i in d.values():
total += i
``````

total = 800

## 回答 8

``````c={"a":123,"b":4,"d":4,"c":-1001,"x":2002,"y":1001}

sum(list(c.values()))``````

You can get a generator of all the values in the dictionary, then cast it to a list and use the sum() function to get the sum of all the values.

Example:

``````c={"a":123,"b":4,"d":4,"c":-1001,"x":2002,"y":1001}

sum(list(c.values()))
``````