¿Cómo puedo comprobar si dos diccionarios son iguales sin tomar en cuenta algunas claves? Por ejemplo,Comparar diccionarios ignorando claves específicas
equal_dicts(
{'foo':1, 'bar':2, 'x':55, 'y': 77 },
{'foo':1, 'bar':2, 'x':66, 'z': 88 },
ignore_keys=('x', 'y', 'z')
)
debe devolver True.
UPD: Estoy buscando una solución eficiente y rápida.
UPD2. Terminé con este código, que parece ser el más rápido:
def equal_dicts_1(a, b, ignore_keys):
ka = set(a).difference(ignore_keys)
kb = set(b).difference(ignore_keys)
return ka == kb and all(a[k] == b[k] for k in ka)
Tiempos: https://gist.github.com/2651872
+1 (¡mejor que mi respuesta!) Además, si uno usa Python 3, puede usar una [comprensión de dict] (http://docs.python.org/py3k/tutorial/datastructures.html#dictionaries) (desplácese hacia abajo un poco) en lugar de la 'd expresión idiomática ict (). –
huon
Esta es una solución sencilla, pero en mi situación la eficiencia importa. – georg
@ thg435 - ver mi respuesta actualizada. – eumiro