比较字典时忽略特定键

16 浏览
0 Comments

比较字典时忽略特定键

如何在不考虑某些键的情况下测试两个字典是否相等。例如,

equal_dicts(
    {'foo':1, 'bar':2, 'x':55, 'y': 77 },
    {'foo':1, 'bar':2, 'x':66, 'z': 88 },
    ignore_keys=('x', 'y', 'z')
)

应该返回True。

更新:我正在寻找一种高效、快速的解决方案。

更新2:我最终得到了以下代码,它似乎是最快的:

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

0