Осваиваю Кэш. Отличная фраза) Надо почаще осваивать Кэш и побольше)).
За основу взяты методы ассоциативного массива (словаря), но с необходимыми дополнениями. Отличие кэша в том, что присутствует механизм удаления наименее ценного элемента, если хэш-таблица заполнена. Выбран вариант вытеснения элемента с меньшим количеством обращений.
Реализованы следующие методы:
- def __init__(self, sz):
'''Конструктор'''
- def hash_fun(self, key): # в качестве key поступают строки!
'''по входному значению вычисляет индекс слота'''
- def is_key(self, key):
'''возвращает True если ключ имеется, иначе False'''
- def put(self, key, value):
'''гарантированно записываем значение value по ключу key'''
- def get(self, key):
'''возвращает value для key, или None если ключ не найден'''
- def seek_slot(self, value):
'''функцию поиска слота - по входному значению сперва рассчитывает индекс хэш-функцией, а затем отыскивает подходящий слот для него с учётом коллизий, или возвращает None, если это не удалось'''
# находит индекс пустого слота для значения, или None