|
1 | | -# """ |
2 | | -# Хэш таблица - это структура данных, которая обеспечивает быстрый доступ к элементам по ключу. |
3 | | -# Она использует хэш-функцию (hash function) для преобразования ключа в индекс массива, |
4 | | -# где хранится соответствующее значение. |
5 | | -# """ |
6 | | -# |
7 | | -# class HashTable: |
8 | | -# def __init__(self, size=10): |
9 | | -# self.size = size |
10 | | -# self.table = [[] for _ in range(size)] # каждый слот — список (цепочка) |
11 | | -# |
12 | | -# def _hash(self, key): |
13 | | -# """Хэшируем с помощью встроенной функции hash()""" |
14 | | -# return hash(key) % self.size |
15 | | -# |
16 | | -# def insert(self, key, value): |
17 | | -# index = self._hash(key) |
18 | | -# # проверяем, есть ли ключ |
19 | | -# for pair in self.table[index]: |
20 | | -# if pair[0] == key: |
21 | | -# pair[1] = value # обновляем |
22 | | -# return |
23 | | -# self.table[index].append([key, value]) # вставляем новый |
24 | | -# |
25 | | -# def get(self, key): |
26 | | -# index = self._hash(key) |
27 | | -# for pair in self.table[index]: |
28 | | -# if pair[0] == key: |
29 | | -# return pair[1] |
30 | | -# return None |
31 | | -# |
32 | | -# def delete(self, key): |
33 | | -# index = self._hash(key) |
34 | | -# for i, pair in enumerate(self.table[index]): |
35 | | -# if pair[0] == key: |
36 | | -# del self.table[index][i] |
37 | | -# return True |
38 | | -# return False |
39 | | -# |
40 | | -# def __str__(self): |
41 | | -# result = "" |
42 | | -# for i, chain in enumerate(self.table): |
43 | | -# result += f"{i}: {chain}\n" |
44 | | -# return result |
45 | | -# |
46 | | -# |
47 | | -# # Пример использования |
48 | | -# ht = HashTable(size=5) # маленький размер, чтобы увидеть коллизии |
49 | | -# |
50 | | -# ht.insert("apple", 10) |
51 | | -# ht.insert("banana", 20) |
52 | | -# ht.insert("orange", 30) |
53 | | -# ht.insert("grape", 40) |
54 | | -# ht.insert("melon", 50) |
55 | | -# |
56 | | -# print("Хэш-таблица после вставок:") |
57 | | -# print(ht) |
58 | | -# |
59 | | -# print("Значение по ключу 'banana':", ht.get("banana")) |
60 | | -# |
61 | | -# ht.delete("orange") |
62 | | -# print("После удаления 'orange':") |
63 | | -# print(ht) |
64 | 1 |
|
65 | 2 | text = "spam spam eggs spam" |
66 | 3 | freq = {} |
|
0 commit comments