Como las muchas preguntas sobre el tema aquí en atestiguan SO, tomando una rebanada de un diccionario es una tarea bastante común, con una solución bastante buena:Python crear propio punto de vista dict del subconjunto de diccionario
{k:v for k,v in dict.viewitems() if some_test(k,v)}
Pero eso crea un nuevo diccionario, con sus propias asignaciones. Para muchas operaciones, sería bueno tener una vista inmutable del dict original (es decir, no admite operaciones de asignación o eliminación en la vista). La implementación de dicho tipo es probablemente fácil, pero no es bueno tener una proliferación de clases de servicios locales.
Entonces, mi pregunta es: ¿existe una forma incorporada de obtener una "vista de subconjunto"? ¿O hay una biblioteca de terceros (preferiblemente disponible a través de PyPi) que proporciona una buena implementación de dicha utilidad?
Sugeriría que una "vista inmutable" en un diccionario es exactamente lo que obtiene con su código de ejemplo ... porque al no hacer una copia separada del diccionario, no estoy seguro de cómo va a hacer el trabajo parcial "inmutable". – larsks
@larsks: Simplemente no podría admitir la asignación. – Marcin
@larsks: Supongo que por "vista inmutable" el OP significa que el objeto de vista en sí no tiene métodos para mutar el diccionario (por ejemplo, pop), y que cualquier cambio en el dict envuelto es visible inmediatamente en la vista. Por supuesto, no es inmutable en un sentido "profundo", es decir, si haces my_view [some_key] .append (12), entonces, por supuesto, se modificará el valor correspondiente a 12. –