Мы знаем самый быстрый способ объединения списков. Сегодня мы попробуем найти самый быстрый способ объединения словарей
Мы рассмотрим следующие способы
- Использование цикла 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 г.