Python嵌套字典值相等性检测及不等值提取问题咨询
代码问题原因
- 对比对象错误:你当前代码直接对比二级子字典本身(比如
{'7': '119a58e9...'}和{'8': '119a58e9...'}),Python字典的相等判断要求键和值完全一致,ae16下selector1fpc10对应的子字典key是8,其余子字典key是7,就算值相同字典对比也会返回False,这是ae16校验结果不符合预期的核心原因。 - 逻辑冗余:生成器表达式中多余的
for k in dic.keys()循环属于无效逻辑,会重复执行相等判断,虽不直接影响结果但属于代码错误。
正确实现方案
你需要先提取每个二级子字典内存储的最终哈希值,再做相等判断,参考代码如下:
for ae_key, sub_dict in my_dict.items(): # 取第一个二级子项的最终值作为基准 sub_iter = iter(sub_dict.values()) base_hash = next(iter(next(sub_iter).values())) # 遍历剩余所有子项对比最终值 all_same = all(next(iter(item.values())) == base_hash for item in sub_iter) print(ae_key, all_same)
运行上述代码会输出:
ae15 False ae16 True
和预期结果完全一致。
内容的提问来源于stack exchange,提问作者psagrera
相关产品推荐
相关产品推荐

