Jak mogę sprawdzić, czy dwa słowniki są jednakowe, biorąc pod uwagę niektóre klucze. Na przykład:Porównaj słowniki ignorujące określone klucze
equal_dicts(
{'foo':1, 'bar':2, 'x':55, 'y': 77 },
{'foo':1, 'bar':2, 'x':66, 'z': 88 },
ignore_keys=('x', 'y', 'z')
)
powinien zwrócić wartość True.
UPD: Szukam wydajnego, szybkiego rozwiązania.
UPD2. Skończyło się tym kodem, który wydaje się być najszybszym:
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)
Timings: https://gist.github.com/2651872
+1 (lepiej niż moja odpowiedź!) Ponadto, jeśli zdarzy się, że używasz Pythona 3, możesz użyć funkcji [Dict Comprehension] (http://docs.python.org/py3k/tutorial/datastructures.html#dictionaries) (przewiń w dół trochę) zamiast "d" ict () 'idiom. –
huon
To proste rozwiązanie, ale w mojej sytuacji liczy się wydajność. – georg
@ thg435 - zobacz moją zaktualizowaną odpowiedź. – eumiro