"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Se puede congelar un diccionario en Python?

¿Se puede congelar un diccionario en Python?

Publicado el 2024-11-03
Navegar:945

 Can You Freeze a Dictionary in Python?

¿Es posible un "dictado congelado" en Python?

El concepto de "dictado congelado" ha sido un tema de discusión dentro del Comunidad de Python. Si bien Python no proporciona un frozendict incorporado, han surgido varias soluciones para abordar la necesidad de un diccionario inmutable y con función hash.

Una razón común para querer un dict congelado es memorizar llamadas a funciones con argumentos desconocidos. Un enfoque típico implica convertir los argumentos en una tupla usando tuple(sorted(kwargs.items())), confiando en la estabilidad de clasificación para la búsqueda en la tabla hash.

Para un enfoque más completo, considere la siguiente clase FrozenDict:

import collections

class FrozenDict(collections.Mapping):
    ...

Esta clase proporciona métodos para iteración, determinación de longitud, recuperación de elementos y cálculo de hash, lo que garantiza que se comporta como un diccionario estándar y admite hash.

En la práctica, FrozenDict funciona de manera 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'

Al proporcionar una implementación personalizada, FrozenDict permite diccionarios inmutables y con función hash en Python, ampliando las posibilidades de manejo de objetos y optimización de la memoria.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3