如何找出字典列表中存在不同关联值的键
解决方案
核心思路
先统计每个键对应的所有关联值(用集合自动去重),再筛选出值的种类超过1种的键即可。
基础实现代码
x = [{'569014_JR1208': 'COMPL'}, {'607923_A0763': 'ERROR'}, {'564849_1H435': 'COMPL'}, {'564849_1H435': 'COMPL'}, {'569014_JR1208': 'ERROR'}, {'646170_1NK3XJ': 'ERROR'}, {'564849_1H435': 'COMPL'}] # 统计每个键对应的所有值集合 key_value_set = {} for item in x: key, val = next(iter(item.items())) # 每个子字典仅含一个键值对 key_value_set.setdefault(key, set()).add(val) # 用列表推导式筛选目标键 target_keys = [k for k, vals in key_value_set.items() if len(vals) > 1] print(target_keys) # 输出: ['569014_JR1208']
结合字典推导式的紧凑实现
如果想用更简洁的推导式写法,可以借助itertools模块扁平化数据后处理:
import itertools # 扁平化所有键值对并按键分组 flat_pairs = itertools.chain.from_iterable(d.items() for d in x) grouped = itertools.groupby(sorted(flat_pairs), key=lambda x: x[0]) # 字典推导式构建键到值集合的映射 key_value_set = {k: {v for _, v in g} for k, g in grouped} # 筛选结果 target_keys = [k for k, vals in key_value_set.items() if len(vals) > 1]
内容的提问来源于stack exchange,提问作者SudipM
相关产品推荐
相关产品推荐

