Middle
58
Оё имкон дорад, ки маҷмӯаи тағйирёбанда ҳамчун калид дар луғат истифода шавад? Номи рӯйхати хешкушоии худро иҷро кунед.
Ширкатҳо дар куҷо пурсиданд
it spirit
Ҷавоб аз AI
sobes.tech AI
В Python изменяемые коллекции (например, списки) нельзя использовать как ключи в словарях, потому что они не являются хэшируемыми (их содержимое может измениться, что нарушит контракт хэширования).
Чтобы сделать изменяемую коллекцию ключом, нужно реализовать собственный класс, который будет:
- Хранить список
- Реализовывать методы hash и eq
При этом важно, чтобы объект был неизменяемым после создания, иначе хэш станет некорректным.
Пример реализации хэшируемого списка:
class HashableList:
def __init__(self, items):
self._items = tuple(items) # делаем неизменяемым
self._hash = hash(self._items)
def __eq__(self, other):
if not isinstance(other, HashableList):
return False
return self._items == other._items
def __hash__(self):
return self._hash
def __repr__(self):
return f"HashableList({self._items})"
# Использование
hl1 = HashableList([1, 2, 3])
hl2 = HashableList([1, 2, 3])
my_dict = {hl1: "value"}
print(my_dict[hl2]) # выведет "value"
Таким образом, мы создаём объект, который ведёт себя как список, но является хэшируемым и может использоваться в качестве ключа.