Хеш-таблицы и хеш-карты в Python
Опубликовано: 2022-11-06Данные требуют нескольких способов доступа или хранения. Хеш-таблицы и хэш-карты оказались лучшими структурами данных для реализации этого в Python с помощью встроенного типа данных, известного как словарь.
Hashmap или Hash-таблица в структуре данных сопоставляет ключи с парами значений и использует функцию, которая вычисляет любое значение индекса, содержащее элементы для вставки, поиска или удаления. Это помогает упростить и ускорить доступ к данным. Хеш-таблицы обычно хранят пары ключ-значение и используют хеш-функцию для генерации ключа.
В этой статье вы узнаете, что такое хэш-таблицы и хэш-карты и как они реализованы в Python.
Изучите науку о данных, чтобы получить преимущество над конкурентами
Что такое Hash-таблица или Hashmap Python?
Хеш-таблица или хэш-карта Python — это индексированная структура данных. Он использует хеш-функции для вычисления индекса с использованием ключа в массиве слотов или сегментов. Вы можете сопоставить его значение с ведром, используя соответствующий индекс, а ключ неизменен и уникален.
Хеш-карты похожи на шкаф с ящиками, помеченный вещами, которые они хранят. Например, хэш-карты могут хранить информацию о пользователе, такую как имя, фамилия и т. д., в корзине.
Хеш-функция является неотъемлемой частью реализации хэш-карты. Он использует ключ и переводит его в индекс корзины в списке корзин. Идеальное хеширование создает отдельный индекс для каждого ключа. Однако имейте в виду, что столкновения могут произойти. Когда хеширование создает уже существующий индекс, можно легко использовать ведро для нескольких значений путем повторного хеширования или добавления списка. В Python примером хеш-карт являются словари.
Давайте подробно рассмотрим реализацию хэш-карты, чтобы узнать, как настраивать и создавать структуры данных для поисковой оптимизации.
Хэш-карта в Python
Хэш-карта включает в себя следующие функции:
- set_val(key, value): эта функция используется для вставки пары ключ-значение в хэш-карту. Если в хэш-карте уже есть существующее значение, вы должны обновить это значение.
- get_val(key): эта функция возвращает значение для указанного ключа, который сопоставляется, или «Запись не найдена», если эта карта не имеет сопоставления для ключа.
- delete_val(key): удаляет сопоставление для определенного ключа, если хэш-карта имеет сопоставление для ключа.
Реализация:-
хэш-таблица класса:
# Создать пустой список сегментов заданного размера
def __init__(я, размер):
собственный размер = размер
self.hash_table = self.create_buckets()
защита create_buckets (я):
вернуть [[] для _ в диапазоне (self.size)]
# Вставляем значения в хеш-карту
def set_val (я, ключ, значение):
# Получить индекс по ключу
# использование хэш-функции
hashed_key = хеш (ключ) % self.size
# Получить ведро, соответствующее индексу
ведро = self.hash_table[хэш_ключ]
найденный_ключ = Ложь
для индекса запись в enumerate(bucket):
ключ_записи, значение_записи = запись
# проверяем, есть ли у ведра тот же ключ, что и
# ключ который нужно вставить
если ключ_записи == ключ:
найденный_ключ = Истина
ломать
# Если в ведре есть тот же ключ, что и вставляемый ключ,
# Обновить значение ключа
# В противном случае добавьте новую пару ключ-значение в корзину
если найден_ключ:
ведро[индекс] = (ключ, значение)
еще:
ведро.append((ключ, значение))
# Возвращаем искомое значение с определенным ключом
def get_val (я, ключ):
# Получить индекс из ключа, используя
# хэш-функция
hashed_key = хеш (ключ) % self.size
# Получить ведро, соответствующее индексу
ведро = self.hash_table[хэш_ключ]
найденный_ключ = Ложь
для индекса запись в enumerate(bucket):
ключ_записи, значение_записи = запись
# проверяем, есть ли у ведра тот же ключ, что и
# искомый ключ
если ключ_записи == ключ:
найденный_ключ = Истина
ломать
# Если у ведра тот же ключ, что и у искомого ключа,
# Возвращаем найденное значение
# В противном случае укажите, что запись не найдена
если найден_ключ:
вернуть значение_записи
еще:
вернуть «Запись не найдена»
# Удалить значение с определенным ключом
def delete_val (я, ключ):
# Получить индекс из ключа, используя
# хэш-функция
hashed_key = хэш (ключ) % self.size
# Получить ведро, соответствующее индексу
ведро = self.hash_table[хэш_ключ]
найденный_ключ = Ложь
для индекса запись в enumerate(bucket):
ключ_записи, значение_записи = запись
# проверяем, есть ли у ведра тот же ключ, что и
# ключ, который нужно удалить
если ключ_записи == ключ:
найденный_ключ = Истина
ломать
если найден_ключ:
ведро.pop(индекс)
возвращаться
# Чтобы распечатать элементы хеш-карты
защита __str__(я):
вернуть «».join(str(item) для элемента в self.hash_table)
hash_table = Хэш-таблица (50)
# вставляем некоторые значения
hash_table.set_val([email protected]', 'какое-то значение')
печать (хэш_таблица)
Распечатать()
hash_table.set_val('[email protected]', 'другое значение')
печать (хэш_таблица)
Распечатать()
# поиск/доступ к записи по ключу
print(hash_table.get_val('[email protected]'))
Распечатать()
# удалить или удалить значение
hash_table.delete_val('[email protected]')
печать (хэш_таблица)
Выход:-
[][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'какое-то значение') ][][][][][][][][][][][][][][][][][][][][][][][] [][][][]
[][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'какое-то значение') ][][][][][][('[email protected]', 'какое-то другое значение')][][][][][][][][][ ][][][][][][][][][][][][][]
Какое-то другое значение
[][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'какое-то значение') ][][][][][][][][][][][][][][][][][][][][][][][] [][][][]
Ознакомьтесь с нашими программами по науке о данных в США
Программа профессиональных сертификатов в области науки о данных и бизнес-аналитики | Магистр наук в области науки о данных | Магистр наук в области науки о данных | Расширенная программа сертификации в области науки о данных |
Программа Executive PG в области науки о данных | Учебный курс по программированию на Python | Программа профессиональных сертификатов в области науки о данных для принятия бизнес-решений | Продвинутая программа по науке о данных |
Выполнение операций над хеш-таблицами с использованием словарей:
Существует множество операций, которые можно выполнять в Python с хеш-таблицами через словари. Они следующие: -
- Доступ к значениям
- Обновление значений
- Удаление элемента
Доступ к значениям:
Вы можете легко получить доступ к значениям словаря следующими способами:
- Использование ключевых значений
- Использование функций
- Реализация цикла for
Использование ключевых значений:
Вы можете получить доступ к значениям словаря, используя ключевые значения, как показано ниже:
my_dict={'Эльза' : '001' , 'Анна': '002' , 'Олаф': '003'} my_dict['Анна'] |
Вывод: '002'
Использование функций:
Существует множество встроенных функций, таких как get(), keys(), values() и т. д.
my_dict={'Эльза' : '001' , 'Анна': '002' , 'Олаф': '003'} печать (my_dict.keys()) печать (мой_дикт. значения ()) печать (my_dict.get ('Эльза')) |
Выход:-
dict_keys(['Эльза', 'Анна', 'Олаф'])
dict_values(['001', '002', '003'])
001
Реализация цикла for:
Цикл дает вам доступ к парам ключ-значение словаря, перебирая их. Например:
my_dict={'Эльза' : '001' , 'Анна': '002' , 'Олаф': '003'} print("Все ключи") для x в my_dict: print(x) # печатает ключи print("Все значения") для x в my_dict.values(): print(x) #выводит значения print("Все ключи и значения") для x,y в my_dict.items(): print(x, «:», y) # печатает ключи и значения |
Выход:
Все ключи
Эльза
Анна
Олаф
Все значения
001
002
003
Все ключи и значения
Эльза: 001
Анна : 002
Олаф: 003
Обновление значений:
Словари — это изменяемые типы данных, которые можно обновлять при необходимости. Вы можете сделать следующее: -
my_dict={'Эльза' : '001' , 'Анна': '002' , 'Олаф': '003'} my_dict['Olaf'] = '004' #Обновление значения Дэйва my_dict['Kristoff'] = '005' # добавление пары ключ-значение печать (мой_дикт) |
Вывод : {'Эльза': '001', 'Анна': '002', 'Олаф': '004', 'Кристофф': '005'}
Удаление элементов из словаря:
Вы можете удалять элементы из словаря с помощью таких функций, как del(), pop(), popitem(), clear() и т. д . Например:
my_dict={'Эльза' : '001' , 'Анна': '002' , 'Олаф': '003'} del my_dict['Эльза'] #удаляет пару "ключ-значение" "Эльза" my_dict.pop('Анна') #удаляет значение 'Анна' my_dict.popitem() #удаляет последний вставленный элемент печать (мой_дикт) |
Вывод : {'Олаф': '003'}
Вывод
Мы можем легко сделать вывод, что хэш-карты и хеш-таблицы Python являются неотъемлемой частью более легкого и быстрого доступа к соответствующим данным. Это ценный инструмент для специалистов по науке о данных, таких как ученые и аналитики данных. Если вы хотите узнать больше о науке о данных, у upGrad есть лучшая программа профессиональных сертификатов в области науки о данных для принятия бизнес-решений .
Что такое хэш-карта Python и хеш-таблица Python?
Хеш-таблица помогает хранить пары ключ-значение, где ключ генерируется с помощью хеш-функции. Хеш-карты или реализации хеш-таблиц в Python выполняются со встроенными словарями.
В чем разница между хэш-картой и хэш-таблицей Python?
Hashmap не синхронизирован, но Hashtable синхронизирована. Это означает, что хэш-таблицы являются потокобезопасными и могут совместно использоваться несколькими потоками, но HashMap требует надлежащей синхронизации перед общим доступом.
Является ли карта хеш-таблицей?
Хеш-таблица Python, также называемая хэш-картой, представляет собой структуру данных, отображающую ключи в значения. Он использует технику хеширования.