"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Você pode congelar um dicionário em Python?

Você pode congelar um dicionário em Python?

Publicado em 2024-11-03
Navegar:914

 Can You Freeze a Dictionary in Python?

É 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.

Tutorial mais recente Mais>

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