在词典列表Python中找到相同键值对的最佳方法

时间:2016-10-28 21:08:36

标签: python dictionary key-value

如果我有一个词典列表,例如

[{'D': 'wet', 'W': 'sun'}, {'D': 'wet', 'W': 'rain'}, {'D': 'wet', 'W': 'sun'}]

检测列表中所有字典之间是否存在相同的键值对的最佳方法是什么。所以在这种情况下," D" :" Wet"将是相同的,因为它在字典列表的所有键和值上是相同的。然而," W"不会是因为它有更多的> 1域(太阳和雨都在W键的域中)。

2 个答案:

答案 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