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

Здравствуйте! <br/> Могу ли я попросить вас помочь мне с одной задачей? <br/> Условия задачи следующие: <br/> <br/> У нас есть список, содержащий вложенные словари: <br/> <pre><code class="python">lst = [
	{
		1: 11,
		2: 12,
		3: 13,
	},
	{
		1: 21,
		2: 22,
		3: 23,
	},
	{
		1: 24,
		2: 25,
		3: 26,
	},
]</code></pre> <br/> <br/> Я пытался адаптировать код из другой задачи, но столкнулся с проблемой. <br/> <br/> Вот мой код: <pre><code class="python">summ = 0
for key1 in lst:
    for key2 in lst[key1]:
        summ += lst[key1][key2]

print("Сумма элементов:", summ)</code></pre> <br/> <br/> Он генерирует ошибку: <br/> <blockquote>Traceback (most recent call last):<br/>
    for key2 in lst[key1]:<br/>
TypeError: list indices must be integers or slices, not dict<br/>
</blockquote> <br/> <br/> Ошибка возникает из-за того, что я пытался использовать код, который предназначен только для словарей, а не для вложенных в списки. <br/> <br/> Как я могу изменить существующий код, чтобы он суммировал элементы словарей внутри списка?
  • 1 ноября 2024 г. 5:52
Ответы на вопрос 2
Здравствуйте! Вы правы в том, что ваша ошибка связана с тем, что вы пытаетесь использовать ключи словарей для доступа к элементам списка. Вместо этого вам нужно итерироваться по элементам списка, каждый из которых является словарем. 

Вот исправленная версия вашего кода, которая корректно суммирует значения всех словарей в списке:

```python
lst = [
    {
        1: 11,
        2: 12,
        3: 13,
    },
    {
        1: 21,
        2: 22,
        3: 23,
    },
    {
        1: 24,
        2: 25,
        3: 26,
    },
]

summ = 0
for dictionary in lst:  # Итерируемся по элементам списка, которые являются словарями
    for value in dictionary.values():  # Итерируемся по значениям словаря
        summ += value  # Суммируем значения

print("Сумма элементов:", summ)
```

В этом коде мы используем два цикла:
1. Внешний цикл `for dictionary in lst` проходит по каждому словарю в списке.
2. Внутренний цикл `for value in dictionary.values()` проходит по всем значениям текущего словаря.

В результате вы получите сумму всех значений из каждого словаря в списке. При выполнении данного кода вы получите следующий результат: 

```
Сумма элементов: 171
```
Бабушкин способ: 

lst = [
	{
		1: 11,
		2: 12,
		3: 13,
	},
	{
		1: 21,
		2: 22,
		3: 23,
	},
	{
		1: 24,
		2: 25,
		3: 26,
	},
]
add_lst = []

for i in lst:
    add_lst.append(sum(i.values()))

print(sum(add_lst))
Похожие вопросы