Hashtables и поиск информации
Центральная тема за хеш-таблицами является интеллектуальное хранение и поиск. Данные должны храниться таким образом, чтобы он был очень легко искать его.
Предположим, мы хотим хранить данные о любых тысяч чисел от одного до миллиона. Используя Hashtables, мы можем эффективно хранить эти числа таким образом, что позволяет легко поискать. Это возможно только в том случае, если мы рассмотрим значения к «ключам» идея хэш-таблицы состоит в том, чтобы разрешить различные возможности ключей, которые могут быть сопоставлены на одно и то же место в массиве. Это делается с помощью «Хэшфунктов» Функция хеша принимает значение и отображает его к ключу.
Пример. Мы могли бы принять функцию хеша, как принимают только последние три цифры числа. Итак, 45367 пойдет на должность 367, а 3769 пойдет на 769. В случае двух чисел имеют тот же набор последних трех цифр, мы можем использовать разные алгоритмы для разрешения столкновения. Один из способов сделать это использует «Chaked Hashtables» или связанные таблицы хэш. В этом списки присутствуют в hashtables вместо числовых значений, где значения могут быть добавлены. Пример ниже сделает все более четкими.
Если вы не знакомы с HASHTABLES, пожалуйста, посетите следующие ссылки –
Если у кого-то есть больше ссылок, пожалуйста, прокомментируйте ниже👇
Простое hashtable
Давайте теперь посмотрим, как сделать простое hashable с использованием словаря. Пользователь входит говорит пять ценностей, и мы рассмотрим их в таблицу длиной десяти. Если значения клавиш перекрываются, то сгенерировано сообщение об ошибке, и новое значение игнорируется. Это управление столкновением будет обрабатываться следующей версией HASH Table, I.N. связанные хеш-таблицы.
Для этой программы мы используем простую hashfunction expency is modulus as – ключей% длина
a={} for i in range(0,5): b=int(input("Please enter an integer ")) key=b%10 #very simple hash function for length 10 try: int(a[key]) #to check if the element is already present in the position or not. print("error-- value occupied!") except: a[key]=b print(a)
ВЫХОД-
Please enter an integer 2 Please enter an integer 43 Please enter an integer 56 Please enter an integer 63 error-- value occupied! Please enter an integer 78 {8: 78, 2: 2, 3: 43, 6: 56}
Упражнение 1) -Медифицировать вышеуказанный код для отображения символов Unicode к Hashtable.
Связанный hashtable.
Теперь мы создаем связанные ссылки, то есть с спискими. Таким образом, мы решаем вопрос ключей в том же положении. Если для одного и того же списка есть несколько значений, то значения добавлены в список, а не игнорируя их. Этот метод используется для быстрой извлечения данных
a={} for i in range(0,10): b=int(input("Please enter a number ")) key=b%10 try:#append to original list exists. if key not in a[key]: a[key].append(b) except:#make a new list a[key]=[b] print(a)
Please enter a number 23 Please enter a number 45 Please enter a number 65 Please enter a number 34 Please enter a number 79 Please enter a number 86 Please enter a number 54 Please enter a number 123 Please enter a number 457 Please enter a number 389 {3: [23, 123], 4: [34, 54], 5: [45, 65], 6: [86], 7: [457], 9: [79, 389]}
Получение данных из HaShtable
Мы можем получить данные от Hashtable очень эффективно. Таким же образом, как мы добавили данные, теперь мы удалимся и покажу.
b=int(input("Please enter the value")) key=b%10 print(a[key].pop(b))
Ответы как обычно в Обучение репозитория Python
Hashtables – это одна из многих многочисленных структур данных. Для получения дополнительной информации, связанной с структурами и алгоритмами данных, пожалуйста, посетите эту серию блогов- Data Structures Blog Series АЯ БУЧИХА на dev.to
✌️so Друзья, которые все сейчас.
Следуй за мной на Github Для обновлений
Оригинал: “https://dev.to/aatmaj/learning-python-basic-course-day-20-hashtables-via-dictionaries-3nf1”