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