Привет всем.
Есть такой код
# эта функция отвечает за деление, возвращает остаток от него
def hashfunction(key, size):
return key % size
# базовый класс со стандартным первым аргументом self. Вызывается из "main"
class HashTable:
def init(self):
self.size = 11
self.slots = [None] * self.size
self.element = [None] * self.size
# функция для проверки + вставки элемента
def put(self, key, element):
hashvalue = hashfunction(key, len(self.slots))
# после того как остаток от деления был найден проверка на то, занят слот или нет. Если не занят вставляем
# его по индексу hashvalue
if self.slots[hashvalue] is None:
self.slots[hashvalue] = key
self.element[hashvalue] = element
else:
if self.slots[hashvalue] == key:
self.element[hashvalue] = element # replace
else:
nextslot = self.rehash(hashvalue, len(self.slots)) # если слот занят элементом смотрим next слот
while self.slots[nextslot] is not None and \
self.slots[nextslot] != key:
nextslot = self.rehash(nextslot, len(self.slots))
if self.slots[nextslot] is None: # если он не занят элементом, то вставляем ключ и элемент
self.slots[nextslot] = key
self.element[nextslot] = element
else:
self.element[nextslot] = element # replace
# функция реализующую шаг для поиска свободного слота под элемент
def rehash(self, oldhash, size):
return (oldhash + 1) % size
def get(self, key):
startslot = hashfunction(key, len(self.slots))
element = None
stop = False
found = False
position = startslot
while self.slots[position] is not None and \
not found and not stop:
if self.slots[position] == key:
found = True
element = self.element[position]
else:
position = self.rehash(position, len(self.slots))
if position == startslot:
stop = True
return element
def getitem(self, key):
return self.get(key)
# Эта функция берет ключ и его элемент, чтобы добавить в хэш-таблицу
def setitem(self, key, element):
self.put(key, element)
H = HashTable()
f = open('sample.txt', "r")
data = []
for line in f:
data.append(int(line.strip('\n')))
print(data)
73 H[54] = 233
H[26] = 44
H[93] = 5
H[17] = 4531
H[77] = 34
H[31] = 1
H[44] = 0
H[55] = 44
81 H[20] = 22
Коротко. Это хэш таблица с ключом и элементом. Я хочу брать элементы из файла sample. С прочтением нет никаких проблем. С функциями класса вроде тоже не путаюсь. Все что мне нужно это прочитать файл и добавить в него ключ и привести к виду как в строчках 73-81. Я не понимаю как это сделать. Если есть свободное время, то могу в личку написать кому-нибудь