如何測試兩個字典是否相等,同時考慮一些密鑰。例如,比較字典忽略特定鍵
equal_dicts(
{'foo':1, 'bar':2, 'x':55, 'y': 77 },
{'foo':1, 'bar':2, 'x':66, 'z': 88 },
ignore_keys=('x', 'y', 'z')
)
應返回true。
UPD:我正在尋找一個高效,快速的解決方案。
UPD2。我結束了這段代碼,這似乎是最快的:
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)
時序:https://gist.github.com/2651872
+1 (比我的回答好!)另外,如果碰巧使用Python 3,你可以使用[dict comprehension](http://docs.python.org/py3k/tutorial/datastructures.html#dictionaries)(向下滾動一點)代替d ict()成語。 –
huon
這是一個直接的解決方案,但在我的情況下效率很重要。 – georg
@ thg435 - 查看我更新的答案。 – eumiro