如何在Python中求字典值的交集?
Python字典值的交集计算
针对你给出的字典 dic={3: [2, 7, 8], 1: [7]},要得到所有值列表的交集,这里提供两种实用方法:
方法一:利用set.intersection解包操作
集合的交集操作是处理这类问题的高效方式,步骤如下:
dic = {3: [2, 7, 8], 1: [7]} # 将每个值列表转为集合,再统一求交集 intersection = set.intersection(*(set(val) for val in dic.values())) # 转成期望的列表格式 result = list(intersection) print(result) # 输出: [7]
解释:先遍历字典的所有值,把每个列表转换成集合,再用set.intersection解包这些集合,得到所有集合的交集,最后转成列表即可。
方法二:结合functools.reduce实现
如果习惯用函数式编程风格,可以用reduce逐步计算交集:
from functools import reduce dic = {3: [2, 7, 8], 1: [7]} # 依次对集合做交集运算 result = list(reduce(lambda a, b: a & b, (set(val) for val in dic.values()))) print(result) # 输出: [7]
解释:reduce会把第一个集合作为初始值,依次和后续每个集合做交集运算,最终得到所有值的交集。
这两种方法都能处理字典值数量为1的情况(此时结果就是该值列表去重后的内容),若需处理空字典场景,可额外添加判断逻辑。
内容的提问来源于stack exchange,提问作者Image Privacy
相关产品推荐
相关产品推荐

