(dict | dict 2) - как работает альтернативный оператор python словаря? - PullRequest
1 голос
/ 21 июня 2020

Что делает операция dict | dict2 в Python?

Я наткнулся на нее и не уверен, что она на самом деле делает и когда ее использовать.

1 Ответ

3 голосов
/ 21 июня 2020

Новые операторы обновления словаря и слияния (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}

Преимущества |

  1. Упрощение и единообразие для словарей, наборов, списков.
  2. Сохранение типов. В частности, старый метод 2 не сохраняет тип словарей.
  3. d1 | d2 - это выражение, а старые подходы не подходят, что может пригодиться, когда результат должен быть использован немедленно (например, передача параметров, понимание списка , et c.)
  4. Эффективность (в некоторых случаях не будут создаваться временные словари, хотя в предыдущих версиях Python они были).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...