- Питон сумма значений словаря
- # Table of Contents
- # Sum all values in a dictionary in Python
- # Sum all values in a dictionary using a for loop
- # Sum all values in a dictionary using reduce()
- # Sum the values in a list of dictionaries in Python
- # Sum the values in a list of dictionaries for All dictionary keys
- Как посчитать сумму значений словаря в Python
- Вычисление суммы значений словаря
- Вычисление суммы значений, удовлетворяющих определенному условию
- Вычисление суммы на основе ключей
- Вычисление суммы значений словаря с использованием функции reduce()
- Заключение
- Как сложить словари в которых числа?
Питон сумма значений словаря
Last updated: Feb 19, 2023
Reading time · 5 min
# Table of Contents
# Sum all values in a dictionary in Python
Use the sum() function to sum all values in a dictionary.
The values() method on the dictionary will return a view of the dictionary’s values, which can directly be passed to the sum() function to get the sum.
Copied!my_dict = 'one': 1, 'two': 2, 'three': 3, > total = sum(my_dict.values()) print(total) # 👉️ 6 # 👇️ [1, 2, 3] print(list(my_dict.values()))
We used the sum() function to sum all values in a dictionary.
The dict.values method returns a new view of the dictionary’s values.
The sum function takes an iterable, sums its items from left to right and returns the total.
Copied!print(sum([1, 2, 3])) # 👉️ 6
The sum function takes the following 2 arguments:
Name | Description |
---|---|
iterable | the iterable whose items to sum |
start | sums the start value and the items of the iterable. sum defaults to 0 (optional) |
Notice that the value for the optional start argument defaults to 0 . This means that using this approach with an empty dictionary would return 0 .
Copied!my_dict = > total = sum(my_dict.values()) print(total) # 👉️ 0 # 👇️ [] print(list(my_dict.values()))
Alternatively, you can use a for loop.
# Sum all values in a dictionary using a for loop
This is a three-step process:
- Declare a new variable and initialize it to 0 .
- Use a for loop to iterate over the dictionary’s values.
- On each iteration, add the current dictionary value to the variable.
Copied!my_dict = 'one': 1, 'two': 2, 'three': 3, > total = 0 for value in my_dict.values(): total += value print(total) # 👉️ 6
We initialized the total variable to 0 and used the dict.values() method to get an iterator of the dictionary’s values.
On each iteration, we reassign the total variable to the result of adding the current value to it.
# Sum all values in a dictionary using reduce()
You can also sum all values in a dictionary using the reduce() function.
Copied!from functools import reduce my_dict = 'one': 1, 'two': 2, 'three': 3, > total = reduce( lambda acc, current: acc + current, my_dict.values() ) print(total) # 👉️ 6
Using the reduce() function is definitely not needed in this scenario as it is much more verbose than passing the view of the dictionary’s values directly to the sum() function.
The reduce function takes the following 3 parameters:
Name | Description |
---|---|
function | A function that takes 2 parameters — the accumulated value and a value from the iterable. |
iterable | Each element in the iterable will get passed as an argument to the function. |
initializer | An optional initializer value that is placed before the items of the iterable in the calculation. |
The lambda function in the example takes the accumulated value and the current value as parameters and returns the sum of the two.
If we provide a value for the initializer argument, it is placed before the items of the iterable in the calculation.
Copied!from functools import reduce my_dict = 'one': 1, 'two': 2, 'three': 3, > total = reduce( lambda acc, current: acc + current, my_dict.values(), 0 ) print(total) # 👉️ 6
In the example, we passed 0 for the initializer argument, so the value of the accumulator will be 0 on the first iteration.
The value of the accumulator would get set to the first element in the iterable if we didn’t pass a value for the initializer .
If the iterable is empty and the initializer is provided, the initializer is returned.
Copied!from functools import reduce my_dict = > total = reduce( lambda acc, current: acc + current, my_dict.values(), 0 ) print(total) # 👉️ 0
# Sum the values in a list of dictionaries in Python
To sum the values in a list of dictionaries:
- Use a generator expression to iterate over the list.
- On each iteration, access the current dictionary at the specific key.
- Pass the generator expression to the sum() function.
Copied!from collections import Counter # ✅ sum values in a list of dictionaries for specific dict key list_of_dicts = [ 'name': 'Alice', 'salary': 100>, 'name': 'Bob', 'salary': 100>, 'name': 'Carl', 'salary': 100>, ] total = sum(d['salary'] for d in list_of_dicts) print(total) # 👉️ 300
We used a generator expression to iterate over the list of dictionaries.
Generator expressions are used to perform some operation for every element or select a subset of elements that meet a condition.
On each iteration, we access the specific dict key to get the corresponding value and return the result.
The sum function takes an iterable, sums its items from left to right and returns the total.
The sum function takes the following 2 arguments:
Name | Description |
---|---|
iterable | the iterable whose items to sum |
start | sums the start value and the items of the iterable. sum defaults to 0 (optional) |
# Sum the values in a list of dictionaries for All dictionary keys
If you need to sum the values in a list of dictionaries for all dictionary keys, use the Counter class.
Copied!from collections import Counter list_of_dicts = [ 'id': 1, 'salary': 100>, 'id': 2, 'salary': 100>, 'id': 3, 'salary': 100>, ] my_dict = Counter() for d in list_of_dicts: for key, value in d.items(): my_dict[key] += value # 👇️ Counter() print(my_dict) total = sum(my_dict.values()) print(total) # 👉️ 306
The Counter class from the collections module is a subclass of the dict class.
The class is basically a mapping of key-count pairs.
Как посчитать сумму значений словаря в Python
Python предлагает широкий спектр возможностей для работы со словарями, которые являются неотъемлемой частью языка. В этой статье мы сфокусируемся на том, как можно посчитать сумму значений словаря.
Вычисление суммы значений словаря
Python предоставляет встроенную функцию sum() , которая может быть использована для вычисления суммы значений в словаре. Функция dict.values() используется для получения всех значений словаря.
my_dict = total = sum(my_dict.values()) print(total) #60
Вычисление суммы значений, удовлетворяющих определенному условию
В некоторых случаях может потребоваться вычислить сумму значений словаря, которые удовлетворяют определенному условию. Это можно сделать с использованием генераторов списков и функции sum() .
my_dict = total = sum(value for value in my_dict.values() if value > 15) print(total) #50
Вычисление суммы на основе ключей
Можно также вычислять сумму значений, ключи которых удовлетворяют определенному условию.
my_dict = total = sum(value for key, value in my_dict.items() if "a" in key) print(total) #30
Вычисление суммы значений словаря с использованием функции reduce()
Функция reduce() из модуля functools может быть использована для вычисления суммы значений словаря.
from functools import reduce my_dict = total = reduce(lambda a, b: a + b, my_dict.values()) print(total) #60
Заключение
Подсчет суммы значений словаря — это распространенная задача при работе с данными в Python. С помощью встроенных функций Python и некоторых простых техник вы можете легко решить эту задачу, будь то подсчет общей суммы всех значений в словаре или суммы значений, удовлетворяющих определенному условию.
Функция eval() в Python: выполнение строки-выражения с кодом
Метод isdecimal() в Python: проверяем, что строка содержит только десятичные числа.
Основные принципы работы метода sort() для списков в Python
Сортировка словаря по значениям в Python: самые просты способы
Стандартные и собственные модули в Python: создание, импорт с помощью import и from
Создаем итератор с помощью функции iter() в Python
Как сложить словари в которых числа?
Изучаю тему «Словари» и попалась задача на сложение словарей, у меня есть словарь состоящий из 3х ключей + 3 значения:
Необходимо вывести на консоль общий рост семьи как сумму ростов всех членов.
При этом нужно, чтобы общий рост вывелся в формате:
Общий рост моей семьи — ХХ см.
Сложение провести получилось:
Теперь вопрос заключается в том, как вывести это число в нужном мне формате, не просто числом, а:
Общий рост моей семьи — ХХ см.
Простой 7 комментариев
Ипатьев, всё вышло с складыванием, теперь нужно записать в формате:
Общий рост моей семьи — ХХ см, не пойму как это сделать
Ипатьев, ну получается я сделал 3 отдельных словаря father, mother, brother и с помощью sum value я сделал сложение.
вы сделали один словарь, d. и с помощью sum value сделали в нём сложение
а исходно у вас было три. с которыми никакое «sum value» не сработает
но вы, похоже, не можете определиться, сколько у вас словарей и путаете 1 и 3
# Выведите на консоль рост отца в формате # Рост отца - ХХ см print ("Рост моего отца -", father["Папа"], "см.") print ("Рост моего матери -", mother["Мама"], "см.") print ("Рост моего брата -", brother["Брат"], "см.") # Выведите на консоль общий рост вашей семьи как сумму ростов всех членов # Общий рост моей семьи - ХХ см family = print("Общий рост моей семьи -", sum(family.values()), "см.")
Ну вот весь код, видимо я сам начал путаться уже да
ну это читинг.
вы приводите не сумму значений в трех исходных словарях, а сумму значений в каком-то левом словаре, которого не было в задании
на месте преподавателя я бы не зачел
при том что просто получить сумму трех переменных — ну это я не знаю, в первом классе проходят? или во втором?
dict.values() возвращает список значений словаря:
di = for value in di.values(): print(value) # 1 # 2
надо только их где-то сложить
Но теперь мне нужно записать число которое вышло в значении:
Общий рост моей семьи — ХХ см.
Я не пойму как это сделать, даже не знаю как загуглить :С
Даниил Шевкунов, да всё верно, только нужно вместо d вставить:
(sum(d.values()) чтобы вышла сумма значений)
Руслан, Сначала я подумал, что я отстал в развитие и не понимал, почему вы просто не можете вывести значение на экран.
Но потом понял, вы подошли к изучению языка совершенно не серьёзно и даже не умеете выводить сообщение в консоль.
См. про форматирование строк в питоне, форматированный вывод в питоне и про f-строки f-strings
In[155]: print (f'Общий рост моей семьи : %s см' % ( sum(d.values() ) ) ) #самофикс - f' тут необязательно, этот префикс для другого способа форматирования используется с Общий рост моей семьи : 514
%s на практике работает и с числами, и с десятичной запятой.
мне хватает, а если нужно форматирование чисел, то тогда нужно уже свом плейсхолдеры использовать %f, %d
Тип Значение
‘d’, ‘i’, ‘u’ Десятичное число.
‘o’ Число в восьмеричной системе счисления.
‘x’ Число в шестнадцатеричной системе счисления (буквы в нижнем регистре).
‘X’ Число в шестнадцатеричной системе счисления (буквы в верхнем регистре).
‘e’ Число с плавающей точкой с экспонентой (экспонента в нижнем регистре).
‘E’ Число с плавающей точкой с экспонентой (экспонента в верхнем регистре).
‘f’, ‘F’ Число с плавающей точкой (обычный формат).
‘g’ Число с плавающей точкой. с экспонентой (экспонента в нижнем регистре), если она меньше, чем -4 или точности, иначе обычный формат.
‘G’ Число с плавающей точкой. с экспонентой (экспонента в верхнем регистре), если она меньше, чем -4 или точности, иначе обычный формат.
‘c’ Символ (строка из одного символа или число — код символа).
‘s’ Строка.
У вас задача на сложение переменных, которые являются элементами разных словарей.
А не на скоростное гугление по запросу «как сложить элементы в одном словаре».
Чтобы сложить три переменные, не нужно создавать новый словарь. Надо просто сложить три переменные и вывести результат.
Это всё очень плохо.
Программы, которые мы пишем, должны выдавать правильный результат при любых вводных.
А ваша будет всегда будет выдавать 514, либо её надо будет каждый раз переписывать под новые данные.
Потому что она считает не то что было задано, а какой-то левый массив, который не имеет никакой связи с исходными данными.
Изучаете вы, а делать задания должны вы?
Читайте документацию по структурам.
Конкретных примеров, разумеется, не будет, но основные методы для этого там почерпнуть можно.