Возможен ли «замороженный словарь» в Python?
Концепция «замороженного словаря» была темой обсуждения в Сообщество Python. Хотя Python не предоставляет встроенного замороженного словаря, появилось несколько решений, позволяющих удовлетворить потребность в неизменяемом хешируемом словаре.
Одной из распространенных причин использования замороженного словаря является запоминание вызовов функций с неизвестными аргументами. Типичный подход включает преобразование аргументов в кортеж с помощью tuple(sorted(kwargs.items())), полагаясь на стабильность сортировки при поиске в хэш-таблице.
Для более комплексного подхода рассмотрите следующий класс FrozenDict:
import collections
class FrozenDict(collections.Mapping):
...
Этот класс предоставляет методы для итерации, определения длины, извлечения элементов и вычисления хэша, гарантируя, что он ведет себя как стандартный словарь и поддерживает хеширование.
На практике FrozenDict работает эффективно :
x = FrozenDict(a=1, b=2)
y = FrozenDict(a=1, b=2)
print(x is y, x == y, x == {'a': 1, 'b': 2})
d = {x: 'foo'}
print(d[y]) # 'foo'
Предлагая собственную реализацию, FrozenDict позволяет создавать неизменяемые, хэшируемые словари в Python, расширяя возможности обработки объектов и оптимизации памяти.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3