Мы знаем самый быстрый способ объединения списков. Сегодня мы попробуем найти самый быстрый способ объединения словарей

Мы рассмотрим следующие способы

  • Использование цикла for
  • Использование метода update()
  • Использование функции ChainMap
  • Использование оператора распаковки
  • Использование оператора канала ( | )
  • Использование оператора (|=)

Как мы будем измерять производительность?

У нас есть пара словарей с 1000 пар ключ-значение в каждом словаре. Мы обновим функцию func для выполнения различных методов комбинирования. Функция будет вызываться 100 раз, и мы будем печатать среднее время выполнения.

Использование цикла for

Мы просто перебираем второй словарь и добавляем его элементы в первый словарь.
Ниже приведен результат.

On average, it took 6.765522999558016e-05 seconds

Использование метода обновления

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

On average, it took 2.554959000008239e-05 seconds

Использование функции ChainMap

В отличие от двух предыдущих подходов создается новый словарь, а исходные словари не обновляются. Ниже приведен вывод

On average, it took 9.942399992723949e-07 seconds

Использование оператора распаковки

В этом подходе мы также создаем новый словарь. Оригинальные словари не обновляются.
Ниже приведен вывод

On average, it took 7.01560299967241e-05 seconds

Используя | оператор

В Python 3.9 для объединения словарей был введен оператор конвейера. Ниже приведен вывод

On average, it took 5.5255000000000026e-05 seconds

Использование оператора |=

Наряду с | оператор, оператор |= был введен в Python 3.9. Ниже приведен вывод

On average, it took 3.0259589999999983e-05 seconds

Сравнение

Метод ChainMap() кажется самым быстрым

Первоначально опубликовано на https://www.realpythonproject.com 17 апреля 2021 г.