这样的通用方法可能会有很多陷阱,但是如果您的词典主要是原始的,而且不庞大,则可以执行以下操作:
假设您的数据如下所示:
networks = [
{'address': '192.168.1.1'},
{'address': '127.0.0.1'},
]
missing = [
{'address': '127.0.0.1'}
]
您可以将字典列表转换为列表元组(可散列)
def make_hashable(d):
return (frozenset(x.iteritems()) for x in d)
networks_hashable = make_hashable(networks)
missing_hashable = make_hashable(missing)
然后减去
diff = set(networks_hashable).difference(missing_hashable)
print list(diff)
或者,转换回字典
print [dict(x) for x in diff]
我已经make_hashable
基于@gnibbler的注释更改了定义。