Сложность операций со словарями
Здесь описана сложность исполнения основных операций над словарями.
В таблице ниже приводится усреднённая сложность. Амортизированный худший случай обычно описывается
Указанная ниже сложность справледлива и для
O(n). Для усреднённой сложности предполагается, что хеш-функция для словарей в состоянии сделать конфликты редкими. Также предполагается, что ключи, используемые в параметрах, выбираются равномерно из множества всех существующих ключей. На заметку
Далее
n — количество элементов в контейнере; k — значение параметра, либо количество элементов в параметре.Указанная ниже сложность справледлива и для
defaultdict (вместе с доступными операциями они наследуют от словарей и их сложности). Предполагается, что конструирование нового defaultdict имеет сложность O(1) (что справледливо для часто используемых int(), list(), set()).| Обращение по индексу | O(1) | d[k] | |
| Присвоение | O(1) | d[k] = v | |
| len | O(1) | len(d) | |
| del | O(1) | del d[k] | |
| .setdefault | O(1) | d.setdefault(1) | |
| .pop | O(1) | d.pop(k) | |
| .popitem | O(1) | d.popitem() | |
| .clear | O(1) | d.clear() | То же: d = {} и d = dict(). |
| Представление | O(1) | d.keys() | |
| Создание | O(k) | dict(obj) | Зависит от числа кортежей (ключ, значение). |
| Проход | O(n) | for k in d: | То же для keys(), values(), items(). |
| .copy | O(n) | d1 = d.copy() |
На заметку
Для словарей, где ключи являются строками, используется быстрый путь. Это не оказывает влияния на алгоритмическую сложность, однако сильно влияет на постоянные факторы — то, на сколько быстро исполяется типовое приложение.
Синонимы поиска: Сложность операций со словарями
В разделе «Сложность операций в Python»:
Сложность операций со множествами
Сложность операций со списками
На заметку
В соответствующем разделе вы можете зарегистрировать сообщество по интересам, чтобы о нём узнали и другие посетители сайта — возможно, так вы отыщите новых единомышленников и друзей.. И не важно виртуальное оно, или вполне реальное, давно существующее, или только-только придуманное.