# Об'єднання / злиття словників

## Стисл&#x43E;**:**

```python
dict = {**dict1, **dict2}

dict1.update(dict2)

# Python 3.9 +
dict = dict1 | dict2
```

## Оператор \*\*

[Выражение `{**dict1, **dict2}`](https://docs-python.ru/tutorial/operatsii-slovarjami-dict-python/obedinenie-dvuh-slovarej-novyj-slovar/) создает **новый словарь** с объединенными ключами и значениями из `dict1` и `dict2`, которые оба должны быть [словарями](https://docs-python.ru/tutorial/osnovnye-vstroennye-tipy-python/tip-dannyh-dict-slovar/).

Значения ключей словаря `dict2` имеют приоритет, когда `dict1` и `dict2` используют одинаковые ключи `key`.

Важно понимать отличие операции [**объединения/слияния словарей**](https://docs-python.ru/tutorial/operatsii-slovarjami-dict-python/obedinenie-dvuh-slovarej-novyj-slovar/) от операции [обновления/дополнения](https://docs-python.ru/tutorial/operatsii-slovarjami-dict-python/metod-dict-update/). Отличие заключается в том, что в результате операции объединения/слияния `{**dict1, **dict2}` образуется новый словарь (исходные словари не изменяются), а при операции обновления/дополнения изменяется исходный словарь `dict`.

#### Примеры объединение двух словарей в один словарь:

```python
>>> x = {"key1": "value1 from x", "key2": "value2 from x"}
>>> y = {"key2": "value2 from y", "key3": "value3 from y"}

>>> {**x, **y}
# {'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}
>>> {**y, **x}
# {'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'}

# Новое в Python 3.9
>>> x | y
# {'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}
>>> y | x
# {'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'}
```

## dict.update()

```python
dict1 = {
    "id": 1,
    "name": "Ashutosh",
    "books": ["Python", "DSA"]
}
dict2 = {
   "college": "NSEC",
    "city": "Kolkata",
    "country": "India"
}
dict1.update(dict2)
dict1
# {'id': 1, 'name': 'Ashutosh', 'books': ['Python', 'DSA'],
#  'college': 'NSEC', 'city': 'Kolkata', 'country': 'India'}
```

Але з використанням методу update() пов'язана одна проблема. Цей метод змінює один із словників. Якщо хочемо створити третій словник без зміни вихідних, ми можемо використовувати цей метод.

Крім того, ми можемо використовувати цей метод лише для об'єднання двох словників за один раз. Якщо ми захочемо поєднати три словники, то нам спочатку доведеться об'єднати перші два, а потім додати третій до зміненого словника.

## Оператор |

Починаючи з Python 3.9 ми можемо використовувати оператор | для поєднання двох або більше словників. Це виглядає так:

```python
dict1 = {
    "id": 1,
    "name": "Ashutosh",
}
dict2 = {
    "books": ["Python", "DSA"],
    "college": "NSEC",
}
dict3 = {
    "city": "Kolkata",
    "country": "India"
}
merged_dict = dict1 | dict2 | dict3
merged_dict
# {'id': 1, 'name': 'Ashutosh', 'books': ['Python', 'DSA'],
#  'college': 'NSEC','city': 'Kolkata', 'country': 'India'}
```


---

# Agent Instructions: 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://olexsyn.gitbook.io/enote/progr/python/dict/obyednannya-zlittya-slovnikiv.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.
