> For the complete documentation index, see [llms.txt](https://bemind.gitbook.io/neural/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bemind.gitbook.io/neural/python/python-lists/kak-dobavit-slovar-v-spisok-v-python.md).

# Как добавить словарь в список в Python

<mark style="color:purple;">**Python списки**</mark> - это изменяемые объекты, которые могут содержать данные разных типов. Из-за этого вы часто будете находить себя в ситуации, когда придется [добавлять элементы к спискам](https://datagy.io/append-to-lists-python/). В этом учебнике вы узнаете, как добавить словарь к списку в Python

На первый взгляд это может показаться незначительной задачей, но есть в ней определенная сложность. Не беспокойтесь, однако! К концу этого руководства вы поймете, почему возникает некоторое неожиданное поведение и как его исправить.

К концу чтения этого руководства вы научитесь следующему:

* Как добавить словарь в список в Python
* Почему вам нужно добавить копию словаря
* Что произойдет, если вы не добавите копию словаря

Содердание

* [Добавления словаря в список](#dobavleniya-slovarya-v-spisok)
* [Проблемы при добавлении словаря в список Python](#problemy-pri-dobavlenii-slovarya-v-spisok-python)
* [Заключение](#zaklyuchenie)
* [Дополнительные ресурсы](#dopolnitelnye-resursy)

### Добавления словаря в список

Python предлагает множество способов добавления значений в список. В частности, вы можете использовать метод `.append()` для добавления словаря в список. Возможно, вы задаетесь вопросом, почему вы читаете целую статью об этом. Скорее всего, вы попробовали метод `.append()` и столкнулись с неожиданными результатами. Давайте подробнее рассмотрим, как добавить словарь в список на Python.

Давайте взглянем на метод `.append()` перед тем, как глубже погрузиться в добавление словарей:

```python
# Понимание метода list.append() в Python
list.append(x)
```

Метод `list.append()` принимает объект, который будет добавлен в конец данного списка. Поскольку метод работает на месте, нет необходимости переназначать список в другую переменную. Как следует из названия, метод `.append()` добавляет элемент в конец указанного списка.

Как добавить словарь в список в Python

1. **Объявите ваш список и словарь**

   Мы будем использовать две переменные для создания нашего списка и словаря в данном случае. Наш список будет называться `values`, а наш словарь — `ages`.
2. **Добавьте к словарю его копию, используя метод copy()**

   Метод `list.append()` в Python работает на месте, что означает, что вам не нужно его переназначать. Вместо передачи самого словаря, примените к коду метод `.copy()`
3. **Python добавит в список копию словаря, а не ссылку**

   Используя метод `.copy()`, мы добавляем в список копии значений словаря, а не их ссылки. Без этого словарь в списке был бы связан с оригиналом.

Давайте рассмотрим пример, чтобы увидеть, как это работает:

```python
# Добавление словаря в список в Python
values = ['bemind.gitbook.io', '.io']
ages = {'Nik': 33}

values.append(ages.copy())
print(values)

# Вывод:
# ['bemind.gitbook.io', '.io', {'Nik': 33}]
```

В приведенном выше блоке кода мы передали копию словаря `ages` методу `.append()`. Это во многом разделяет значения от ссылки и добавляет в список только данные словаря.

### Проблемы при добавлении словаря в список Python

Если вы прочитали до этого момента, возможно, вас интересует, почему нам нужно было использовать метод `.copy()` при добавлении нашего словаря. Давайте рассмотрим пример того, что происходит, когда мы этого не делаем:

```python
# Добавление словаря без копирования
values = ['bemind.gitbook.io', '.io']
ages = {'Nik': 33}

values.append(ages)

print('Список перед изменением: ', values)
ages['Nik'] = 34
print('Список после изменения: ', values)

# Вывод:
# Список перед изменением:  ['bemind.gitbook.io', '.io', {'Nik': 33}]
# Список после изменения:  ['bemind.gitbook.io', '.io', {'Nik': 34}]
```

Давайте разберем, что мы делаем в блоке кода выше:

1. Объявляем наш словарь и список, как и раньше
2. Затем мы добавляем словарь в список, не копируя его.
3. Затем мы распечатываем список
4. Мы модифицируем одно из значений в словаре прямым присвоением
5. Затем мы снова печатаем значения

Мы обнаружили некоторые неожиданные результаты! Мы обновили словарь вне списка, но словарь внутри списка тоже обновился!

Это причина, по которой нам нужно было создать копию словаря перед его добавлением. Когда мы просто добавляем сам словарь, мы добавляем ссылку на объект в список. Сам словарь также является ссылкой. Это означает, что он использует ту же позицию в памяти, и если один объект обновляется, другой тоже обновляется.

При добавлении копии ссылка разрывается! Это гарантирует, что при обновлении одного из словарей другой не обновляется. Фактически, после этого два словаря больше не совместно используют одно и то же место в памяти, что делает операцию гораздо безопаснее!

### Заключение

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

Вы научились добавлять словарь в список с использованием метода `.append()` и метода `.copy()`. Это обеспечило добавление значений словаря, а не ссылки на сам словарь. Далее вы узнали, почему этот процесс необходим, рассмотрев пример того, что происходит, если сначала не скопировать словарь.

### Дополнительные ресурсы

Чтобы узнать больше о связанных темах, ознакомьтесь с обучающими материалами ниже:

* Добавить к списку Python (добавить в начале)
* Как исправить: Python AttributeError: объект «dict» не имеет атрибута «append».
* Python: добавление к кортежу (3 простых способа)
* [dict.copy(): официальная документация](https://docs.python.org/3/library/stdtypes.html#dict.copy)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bemind.gitbook.io/neural/python/python-lists/kak-dobavit-slovar-v-spisok-v-python.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
