如果我有一个词典列表,例如
[{'D': 'wet', 'W': 'sun'}, {'D': 'wet', 'W': 'rain'}, {'D': 'wet', 'W': 'sun'}]
检测列表中所有字典之间是否存在相同的键值对的最佳方法是什么。所以在这种情况下," D" :" Wet"将是相同的,因为它在字典列表的所有键和值上是相同的。然而," W"不会是因为它有更多的> 1域(太阳和雨都在W键的域中)。
答案 0 :(得分:3)
您还可以利用内置于集合
中的交集属性dict(set.intersection(*(set(d.items()) for d in dicts)))
答案 1 :(得分:0)
使用.items()
将每个字典转换为(key, value)
元组的可迭代,将这些迭代转换为集合,然后将它们全部折叠为交集:
reduce(lambda a, b: a & b,
(set(d.items()) for d in
[{'D': 'wet', 'W': 'sun'}, {'D': 'wet', 'W': 'rain'}, {'D': 'wet', 'W': 'sun'}]))
在Python 3中,您需要from functools import reduce
。