我怎样才能在不考虑某些键的情况下测试两个词典是否相等。例如
equal_dicts(
{'foo':1, 'bar':2, 'x':55, 'y': 77 },
{'foo':1, 'bar':2, 'x':66, 'z': 88 },
ignore_keys=('x', 'y', 'z')
)
应该是真的。
我在寻找一个高效、快速的解决方案。
升级版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)
使用听写理解:
在Python 2上使用
.viewitems()
。非常非常粗略地说,您可以删除任何忽略的键并比较这些字典:
(注意,这里不需要深度复制,只需要避免修改
d1
和d2
。)编辑:这可能更快、更节省内存:
相关问题 更多 >
编程相关推荐