如何遍历字典内列表并找出两列表的非共有元素
解决方案
思路
利用集合的差集运算快速定位仅存在于单个列表中的元素——集合差集会返回所有属于当前集合但不属于对比集合的元素,完美匹配需求。
代码实现
# 定义给定的字典 data = { 'ABC-01': ['aaa', 'bbb', 'ccc', 'ddd'], 'ABC-02': ['aaa', 'bbb', 'ccc', 'eee'] } # 将两个列表转为集合,简化集合运算 set1 = set(data['ABC-01']) set2 = set(data['ABC-02']) # 计算各自独有的元素 unique_01 = set1 - set2 unique_02 = set2 - set1 # 按指定格式输出结果 for item in unique_01: print(f"ABC-01 contains {item}") for item in unique_02: print(f"ABC-02 contains {item}")
运行结果
ABC-01 contains ddd ABC-02 contains eee
扩展说明
如果字典包含多个键值对,想要找出每个列表相对于其他所有列表的独有元素,可以遍历每个键,对比当前列表与所有其他列表的并集的差集:
data = { 'ABC-01': ['aaa', 'bbb', 'ccc', 'ddd'], 'ABC-02': ['aaa', 'bbb', 'ccc', 'eee'], 'ABC-03': ['aaa', 'fff', 'ggg'] } # 合并所有列表元素为总集合 all_items = set() for lst in data.values(): all_items.update(lst) for key, lst in data.items(): current_set = set(lst) # 计算当前列表独有的元素 unique = current_set - (all_items - current_set) for item in unique: print(f"{key} contains {item}")
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

