É possível um "dicto congelado" em Python?
O conceito de um "dicto congelado" tem sido um tópico de discussão dentro do Comunidade Python. Embora o Python não forneça um frozendict integrado, várias soluções surgiram para atender à necessidade de um dicionário imutável e hashável.
Um motivo comum para querer um dict congelado é memorizar chamadas de função com argumentos desconhecidos. Uma abordagem típica envolve a conversão dos argumentos em uma tupla usando tuple(sorted(kwargs.items())), contando com a estabilidade de classificação para pesquisa de tabela hash.
Para uma abordagem mais abrangente, considere a seguinte classe FrozenDict:
import collections
class FrozenDict(collections.Mapping):
...
Esta classe fornece métodos para iteração, determinação de comprimento, recuperação de item e cálculo de hash, garantindo que ele se comporte como um dicionário padrão e suporte hash.
Na prática, o FrozenDict opera de forma eficiente :
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'
Ao fornecer uma implementação personalizada, o FrozenDict permite dicionários imutáveis e hasháveis em Python, ampliando as possibilidades de manipulação de objetos e otimização de memória.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3