Новые операторы обновления словаря и слияния (Python> = 3.9)
Начиная с Python 3.9, можно использовать merge (|
) и update (|=
) в Python. Они описаны в PEP-584 . По сути, семантика состоит в том, что значение последнего повторяющегося ключа перезаписывает предыдущие значения и становится значениями для ключа в результирующем словаре.
Эти операторы упрощают создание одного словаря из двух, поэтому они эквивалентны для следующих операций:
e = d1 | d2 # merge since Python 3.9
Эквивалентно старому:
# Python < 3.9
# merge - solution 1
e = d1.copy(); e.update(d2)
# merge - solution 2
e = {**d1, **d2}
И:
d1 |= d2 # merge since Python 3.9
Эквивалент старому:
# Python < 3.9
# merge inplace - solution 1
d1.update(d2)
# merge inplace - solution 2
d1 = {**d1, **d2}
Преимущества |
- Упрощение и единообразие для словарей, наборов, списков.
- Сохранение типов. В частности, старый метод 2 не сохраняет тип словарей.
d1 | d2
- это выражение, а старые подходы не подходят, что может пригодиться, когда результат должен быть использован немедленно (например, передача параметров, понимание списка , et c.) - Эффективность (в некоторых случаях не будут создаваться временные словари, хотя в предыдущих версиях Python они были).