У меня есть некоторая путаница по словарям и хэш-таблицам, которые я хотел бы уточнить. Предположим, у меня есть текущий словарь и текущий вывод хэшей текущего запуска python.Сложность словарей и хэш-таблиц
Dict = dict()
print(hash('a'))
print(hash('b'))
print(hash('c'))
Dict['a'] = 1
Dict['b'] = 2
Dict['c'] = 3
print(Dict)
имеет выход
1714333803
1519074822
1245896149
{'a': 1, 'c': 3, 'b': 2}
Так мне известно, хэш-таблице это просто массив, где хэш индекс Hashtable. Например, «a» имел хэш 1714333803, поэтому мой индекс хэш-таблицы 1714333803 имеет значение «a». Таким образом, я путал, сколько индексов имеет хэш-таблица и как функция хеширования дает ответ? Использует ли он модуль и имеет фиксированный диапазон индексов? Поскольку данная печать словаря выводит {'a': 1, 'c': 3, 'b': 2}
, но правильно ли предположить, что событие, хотя оно выводит это, словарь на самом деле представляет собой набор индексов по крайней мере 1714333803, потому что это кажется смехотворно излишним, чтобы содержать 3 элемента и не говоря уже о том, сколько пустой тратой пространства. Также для хэш-таблицы, что есть в индексах, которые не имеют значения, null?
Динамическое изменение размера массива. Однако он должен будет пересчитать хэш для каждого ключа. Эта ссылка lookinteresting http://www.laurentluce.com/posts/python-dictionary-implementation/ – SnoozeTime
Что вы подразумеваете под «индексами, которые не имеют значения, null»? Ключи, которые не имеют хеша? Или позиции в массиве, которые не были заполнены? – MisterMiyagi
Посмотрите это видео: https://www.youtube.com/watch?v=C4Kc8xzcA68 –