Python中如何删除三层嵌套字典中最里层为相同value(value是dict类型)的键?-灵析社区

古典研发君

python中如何删除三层嵌套字典中最里层为相同字典值的键? 代码 # 输入字典 dict1= {'L1':{'pop1':{'a':1}, 'pop2':{'a':1}, 'pop3':{'a':1}}, 'L2':{'pop1':{'b':1}, 'pop2':{'b':1}, 'pop3':{'b':2}}, 'L3':{'pop1':{'c':1}, 'pop2':{'c':2}, 'pop3':{'c':3}}} # 输出 # L1最里层的字典{'a':1}作为value全部相同,从最外层大字典中删除L1这个item dict2 = {'L2':{'pop1':{'b':1}, 'pop2':{'b':1}, 'pop3':{'b':2}}, 'L3':{'pop1':{'c':1}, 'pop2':{'c':2}, 'pop3':{'c':3}}} 该如何实现从dict1到dict2呢? 尝试过用set判断是否有重复值,但是value是字典,不可哈希 if len(set(dict.values())) == 1: print('value全部相同') else: print('没有value相同') `TypeError: unhashable type: 'dict'`

阅读量:198

点赞量:0

问AI
PunkMaccccc
def remove_replicated(o_d: dict): d_c = o_d.copy() for k, v in d_c.items(): v_dicts = list(v.values()) v_0 = v_dicts[0] all_same = all(v_0 == i for i in v_dicts) if all_same: del o_d[k] remove_replicated(dict1) print(dict1) 这个可以满足你。。。