Хеш-таблицы и хеш-карты в 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, также называемая хэш-картой, представляет собой структуру данных, отображающую ключи в значения. Он использует технику хеширования.