Как найти сумму значений словаря питон

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?

martineau's user avatar

martineau

118k25 gold badges164 silver badges294 bronze badges

asked Feb 2, 2011 at 23:01

nedblorf's user avatar

2

As you’d expect:

sum(d.values())

answered Feb 2, 2011 at 23:02

phihag's user avatar

phihagphihag

276k72 gold badges451 silver badges468 bronze badges

5

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.

answered Feb 2, 2011 at 23:18

martineau's user avatar

martineaumartineau

118k25 gold badges164 silver badges294 bronze badges

1

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

octopusgrabbus's user avatar

answered Feb 2, 2011 at 23:04

vz0's user avatar

vz0vz0

32.2k7 gold badges43 silver badges77 bronze badges

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

answered Jul 12, 2018 at 15:59

Kalyan Pendyala's user avatar

sum(d.values())

  • “d” -> Your dictionary Variable

Maifee Ul Asad's user avatar

answered Mar 8, 2019 at 8:35

Behlul Valiyev's user avatar

Behlul ValiyevBehlul Valiyev

1011 gold badge2 silver badges5 bronze badges

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

Nick's user avatar

Nick

137k22 gold badges57 silver badges95 bronze badges

answered Jan 8, 2019 at 5:12

Pratyush Raizada's user avatar

0

USE sum() TO SUM THE VALUES IN A DICTIONARY.

Call dict.values() to return the values of a dictionary dict.
Use sum(values) to return the sum of the values from the previous step.

d = {'key1':1,'key2':14,'key3':47}
values = d.values()
#Return values of a dictionary    
total = sum(values)
print(total)

answered Dec 24, 2020 at 4:11

Tamil Selvan S's user avatar

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.

enter image description here

answered Dec 13, 2019 at 10:17

Reza's user avatar

RezaReza

1471 silver badge7 bronze badges

2

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

answered Apr 9, 2020 at 3:51

Rahul Patel's user avatar

2

simplest/silliest solution:

https://trinket.io/python/a8a1f25353

d = {'key1': 1,'key2': 14,'key3': 47}
s = 0
for k in d:
    s += d[k]

print(s)

or if you want it fancier:

https://trinket.io/python/5fcd379536

import functools

d = {'key1': 1,'key2': 14,'key3': 47}
s = functools.reduce(lambda acc,k: acc+d[k], d, 0)

print(s)

answered May 12, 2021 at 11:54

nemo's user avatar

nemonemo

12.1k3 gold badges21 silver badges25 bronze badges

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

zganger's user avatar

zganger

3,5721 gold badge9 silver badges13 bronze badges

answered Mar 1, 2020 at 14:06

user12988654's user avatar

2

В этом посте мы обсудим, как вычислить сумму всех значений словаря в Python.

1. Использование sum() функция

Простое решение — использовать встроенную функцию sum() для вычисления суммы всех значений словаря. Идея состоит в том, чтобы получить представление о значениях словаря, используя dict.values() функцию и передать ее sum().

if __name__ == ‘__main__’:

    d = {‘A’: 1, ‘B’: 2, ‘C’: 3}

    total = sum(d.values())

    print(total)        # 6

Скачать  Выполнить код

 
Вы также можете добиться этого с помощью понимания списка.

if __name__ == ‘__main__’:

    d = {‘A’: 1, ‘B’: 2, ‘C’: 3}

    total = sum(d[x] for x in d)

    print(total)        # 6

Скачать  Выполнить код

 
Для значений словаря с плавающей запятой рассмотрите возможность использования math.fsum() чтобы получить сумму с повышенной точностью.

2. Использование операции уменьшения

В качестве альтернативы вы можете использовать functools.reduce() функция для вычисления суммы значений словаря с лямбда-выражением. Ниже приведен простой пример, демонстрирующий использование этого:

from functools import reduce

if __name__ == ‘__main__’:

    d = {‘A’: 1, ‘B’: 2, ‘C’: 3}

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

    print(total)        # 6

Скачать  Выполнить код

Это все о вычислении суммы всех значений словаря в Python.

Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂

I have got pretty simple list:

example_list = [
    {'points': 400, 'gold': 2480},
    {'points': 100, 'gold': 610},
    {'points': 100, 'gold': 620},
    {'points': 100, 'gold': 620}
]

How can I sum all gold values? I’m looking for nice oneliner.

Now I’m using this code (but it’s not the best solution):

total_gold = 0
for item in example_list:
    total_gold += example_list["gold"]

asked Jul 27, 2012 at 17:21

Mateusz Jagiełło's user avatar

Mateusz JagiełłoMateusz Jagiełło

6,79411 gold badges39 silver badges46 bronze badges

3

sum(item['gold'] for item in myList)

answered Jul 27, 2012 at 17:22

g.d.d.c's user avatar

g.d.d.cg.d.d.c

46.5k9 gold badges99 silver badges111 bronze badges

0

If you’re memory conscious:

sum(item['gold'] for item in example_list)

If you’re extremely time conscious:

sum([item['gold'] for item in example_list])

In most cases just use the generator expression, as the performance increase is only noticeable on a very large dataset/very hot code path.

See this answer for an explanation of why you should avoid using map.

See this answer for some real-world timing comparisons of list comprehension vs generator expressions.

Community's user avatar

answered Jul 27, 2012 at 19:16

Ben Burns's user avatar

Ben BurnsBen Burns

14.9k4 gold badges35 silver badges56 bronze badges

2

If you prefer map, this works too:

 import operator
 total_gold = sum(map(operator.itemgetter('gold'),example_list))

But I think the generator posted by g.d.d.c is significantly better. This answer is really just to point out the existence of operator.itemgetter.

answered Jul 27, 2012 at 17:23

mgilson's user avatar

mgilsonmgilson

297k64 gold badges625 silver badges690 bronze badges

3

from collections import Counter
from functools import reduce
from operator import add

sum_dict = reduce(add, (map(Counter, example_list)))
# Counter({'points': 700, 'gold': 4330})
total_gold = sum_dict['gold']

Bruno Mello's user avatar

Bruno Mello

4,3881 gold badge7 silver badges39 bronze badges

answered Feb 24, 2022 at 0:58

xmduhan's user avatar

xmduhanxmduhan

94712 silver badges14 bronze badges

1

example_list = [
    {'points': 400, 'gold': 2480},
    {'points': 100, 'gold': 610},
    {'points': 100, 'gold': 620},
    {'points': 100, 'gold': 620}
]

result = np.sum([x['gold'] for x in example_list])


print(result)

output

 4330

answered Feb 25, 2022 at 12:07

Golden Lion's user avatar

Golden LionGolden Lion

3,7452 gold badges25 silver badges35 bronze badges

1

29.12.2019Python, Программы Python

Имея словарь на Python, напишите программу на Python, чтобы найти сумму всех элементов в словаре.

Примеры:

Input : {'a': 100, 'b':200, 'c':300}
Output : 600

Input : {'x': 25, 'y':18, 'z':45}
Output : 88
  • Подход № 1. Использование встроенной функции sum()

    Используйте функцию суммы, чтобы найти сумму значений словаря.

    def returnSum(myDict):

        sum = 0

        for i in myDict:

            sum = sum + myDict[i]

        return sum

    dict = {'a': 100, 'b':200, 'c':300}

    print("Sum :", returnSum(dict))

    Выход:

    Sum : 600
  • Подход № 2. Использование цикла For для перебора значений с использованием функции values()

    Перебирайте каждое значение словаря с помощью функции values() и продолжайте добавлять его к сумме.

    def returnSum(dict):

         sum = 0

         for i in dict.values():

               sum = sum + i

         return sum

    dict = {'a': 100, 'b':200, 'c':300}

    print("Sum :", returnSum(dict))

    Выход:

    Sum : 600
  • Подход № 3. Использование цикла For для итераций по элементам словаря.

    Перебирайте каждый элемент словаря и просто продолжайте добавлять значения в переменную суммы.

    def returnSum(dict):

         sum = 0

         for i in myDict:

               sum = sum + dict[i]

         return sum

    dict = {'a': 100, 'b':200, 'c':300}

    print("Sum :", returnSum(dict))

    Выход:

    Sum : 600

Рекомендуемые посты:

  • Python | Получить первые K предметов в словаре
  • Методы словаря в Python | Установите 1 (cmp (), len (), items () …)
  • Словарь Python | items () метод
  • Python | Преобразование типов элементов словаря
  • Python | Сортировать элементы в алфавитном порядке из данного словаря
  • Python — частота неравных элементов в словаре
  • Python | Удалить элементы из словаря во время итерации
  • Python | Получить элементы в отсортированном порядке из данного словаря
  • Python | Подсчитать количество элементов в словарном значении, которое является списком
  • Программа Python, чтобы найти второе максимальное значение в словаре
  • Программа Python, чтобы найти самые высокие 3 значения в словаре
  • Python программа для создания словаря из строки
  • Программа Python для обмена ключами и значениями в словаре
  • Python | Найти ближайший ключ в словаре
  • Python | Найти глубину словаря

Программа Python, чтобы найти сумму всех элементов в словаре

0.00 (0%) 0 votes

Как сложить все значения в словаре?

Допустим, у меня есть словарь, в котором ключи отображаются на целые числа, такие как:

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

Есть ли синтаксически минималистичный способ вернуть сумму значений в d-ie 62 в этом случае?

2011-02-02 23:01

11
ответов

Решение

Как и следовало ожидать:

sum(d.values())

В Python<3, вы можете использовать itervalues вместо этого (который не создает временный список).


user35070

02 фев ’11 в 23:02
2011-02-02 23:02

2011-02-02 23:02

В Python 2 вы можете избежать создания временной копии всех значений, используя itervalues() метод dictionary, который возвращает итератор ключей словаря:

sum(d.itervalues())

В Python 3 вы можете просто использовать d.values() потому что этот метод был изменен, чтобы сделать это (и itervalues() был удален, так как он больше не был нужен).

Для облегчения написания независимого от версии кода, который всегда перебирает значения ключей словаря, может быть полезна служебная функция:

import sys

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

sum(itervalues(d))

По сути, это то, что Бенджамин Петерсон six модуль делает.

2011-02-02 23:18

Конечно, есть. Вот способ суммировать значения словаря.

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

2011-02-02 23:04

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

Вы можете сделать это с помощью цикла for

2018-07-12 15:59

sum(d.values ​​()) – “d” -> Ваш словарь Переменная

2019-03-08 08:35

Я чувствую sum(d.values()) это самый эффективный способ получить сумму.

Вы также можете попробовать функцию Reduce для вычисления суммы вместе с лямбда-выражением:

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

2019-01-08 05:12

ИСПОЛЬЗУЙТЕ sum(), ЧТОБЫ СУММИРОВАТЬ ЗНАЧЕНИЯ В СЛОВАРЕ.

Вызовите dict.values ​​(), чтобы вернуть значения словаря dict. Используйте sum(values), чтобы вернуть сумму значений из предыдущего шага.

      d = {'key1':1,'key2':14,'key3':47}
values = d.values()
#Return values of a dictionary    
total = sum(values)
print(total)

2020-12-24 07:11

Ответ phihag (и аналогичные) не будет работать в python3.

Для Python 3:

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

Обновить! Есть жалобы, что не работает! Просто прикрепляю скриншот со своего терминала. Возможно несоответствие версий и т. Д.

2019-12-13 13:17

Вы можете использовать для этого цикл for:

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

всего = 800

2020-04-09 06:51

Вы можете получить генератор всех значений в словаре, затем преобразовать его в список и использовать функцию sum() для получения суммы всех значений.

Пример:

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

sum(list(c.values()))

2020-03-01 17:06

Добавить комментарий