Как можно вычислить сумму элементов кортежей, которые являются значениями словарей, находящихся внутри списка?

Здравствуйте. <br/> <br/> У меня есть следующая структура данных: <br/> <br/> <pre><code class="python">lst = [
	{
		1: (1, 2, 3),
		2: (1, 2, 3),
		3: (1, 2, 3),
	},
	{
		1: (1, 2, 3),
		2: (1, 2, 3),
		3: (1, 2, 3),
	},
	{
		1: (1, 2, 3),
		2: (1, 2, 3),
		3: (1, 2, 3),
	},
];</code></pre> <br/> <br/> Я не совсем понимаю, как называется эта конструкция, так как вижу её впервые. <br/> Мне нужно узнать, как найти сумму всех элементов в этой структуре данных. <br/> Я пробовал различные методы для суммирования элементов списков и словарей, но они не подошли. <br/> Можете подсказать, как можно посчитать сумму элементов в данной конструкции?
  • 9 ноября 2024 г. 6:03
Ответы на вопрос 2
Здравствуйте!

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

Ниже приведён пример кода, который суммирует все элементы кортежей в предоставленной вами структуре:

```python
lst = [
    {
        1: (1, 2, 3),
        2: (1, 2, 3),
        3: (1, 2, 3),
    },
    {
        1: (1, 2, 3),
        2: (1, 2, 3),
        3: (1, 2, 3),
    },
    {
        1: (1, 2, 3),
        2: (1, 2, 3),
        3: (1, 2, 3),
    },
]

# Инициализируем переменную для суммы
total_sum = 0

# Проходим по каждому словарю в списке
for dictionary in lst:
    # Проходим по каждому значению (кортежу) в словаре
    for tuple_values in dictionary.values():
        # Суммируем элементы из кортежа
        total_sum += sum(tuple_values)

# Выводим общую сумму
print(total_sum)
```

### Объяснение кода:
1. Инициализируем переменную `total_sum`, чтобы хранить общую сумму.
2. Проходим по каждому словарю из списка `lst` с помощью внешнего цикла.
3. Внутренним циклом проходим по каждому значению (кортежу) в словаре, используя `dictionary.values()`.
4. Используя функцию `sum`, суммируем все элементы в кортеже и добавляем эту сумму к `total_sum`.
5. В конце выводим общую сумму.

В данном примере, поскольку все кортежи содержат только числа 1, 2 и 3, результат будет 54, так как каждый кортеж `(1, 2, 3)` суммируется до 6 и таких кортежей 9 (по 3 в каждом словаре).
result = 0

for n in lst:
  for m in n.values():
    for val in m:
      result += val

или

result = sum(val for n in lst for m in n for val in n[m])
Похожие вопросы