Cześć.
Próbuję zrobić tablicę z haszowaniem, jednak mam problem.
Kod:
print('Pusta tablica wielkości 10')
tabH = [[] for _ in range(10)]
print (tabH)
print()
def wstawianie(tabH, klucz, wartość):
kluczH = hash(klucz) % len(tabH)
czy_istnieje = False
pozycja = tabH[kluczH]
for i, kw in enumerate(pozycja):
k, w = kw
if klucz == k:
czy_istnieje = True
break
if czy_istnieje:
pozycja[i] = ((klucz, wartość))
else:
pozycja.append((klucz, wartość))
print('Wstawianie danych do tablicy')
wstawianie(tabH, 10, 'Truskawka')
wstawianie(tabH, 25, 'Jagoda')
wstawianie(tabH, 20, 'Pomarańcza')
wstawianie(tabH, 32, 'Gruszka')
print (tabH)
wstawianie(tabH, 10, 'Poziomka')
print (tabH)
print()
Chciałbym, aby w przypadku klucza o takim samym numerze (w tym przypadku 10) nie nadpisywało mi wartości, a dodawało ją do listy.
Aktualnie w wyniku otrzymuję:
[[(10, 'Truskawka'), (20, 'Pomarańcza')], [], [(32, 'Gruszka')], [], [], [(25, 'Jagoda')], [], [], [], []]
[[(10, 'Poziomka'), (20, 'Pomarańcza')], [], [(32, 'Gruszka')], [], [], [(25, 'Jagoda')], [], [], [], []]
A chciałbym otrzymać:
[[(10, 'Truskawka'), (20, 'Pomarańcza')], [], [(32, 'Gruszka')], [], [], [(25, 'Jagoda')], [], [], [], []]
[[(10, 'Truskawka', 'Poziomka'), (20, 'Pomarańcza')], [], [(32, 'Gruszka')], [], [], [(25, 'Jagoda')], [], [], [], []]
Czy może mi ktoś pomóc przerobić ten fragment kodu, aby działanie było poprawne?