Использование @ functools.lru_cache со словарными аргументами

У меня есть метод, который принимает (среди прочего) словарь в качестве аргумента. Этот метод анализирует строки, а словарь предоставляет замену для некоторых подстрок, поэтому он не должен быть изменяемым.

Эта функция вызывается довольно часто и для избыточных элементов, поэтому я решил, что кэширование повысит ее эффективность.

12101] Но, как вы уже догадались, поскольку dict является изменяемым и, следовательно, не хешируемым, (скрытый) не может украсить мою функцию. Так как же мне это преодолеть?

Бонус, если нужны только стандартные библиотечные классы и методы. В идеале, если он существует в стандартной библиотеке какой-то frozendict , которого я не видел, это сделало бы мой день лучше.

PS: namedtuple только в крайнем случае, так как для этого потребуется большой синтаксический сдвиг.

22
задан Evpok 15 June 2011 в 13:43
поделиться