Python访问jsondiff.diff返回字典insert项报KeyError如何解决
报错原因
jsondiff.diff()返回的结果虽然是dict类型,但字典的键不是普通字符串。你看到输出里的insert是jsondiff库自定义的特殊符号常量的打印效果,和你写的字符串'insert'不是同一个对象,所以用字符串键查询会触发KeyError。另外dict.insert是访问对象属性的语法,完全不适用于字典键取值,本身写法就是错误的。
正确取值方式
先从jsondiff的符号模块导入对应的insert常量,再用这个常量作为键取字典里的值即可:
from jsondiff import diff from jsondiff.symbols import insert # 导入库内置的insert常量 # 执行映射对比 diff_pulled_to_loaded = diff(dfpulledlist, dfloadedlist) # 取新增字段条目 insert_entries = diff_pulled_to_loaded[insert] # 统计新增条目数量 insert_count = len(insert_entries)
执行后insert_entries就是你需要的元组列表:
[(114, 'mappings.properties.saw_something.properties.monster_fish'), (121, 'mappings.properties.aliens')]
额外提示
jsondiff返回的差异结果里的delete、update等其他差异类型键,也都是库自定义的符号常量,不是字符串,需要访问对应值的时候都要先从jsondiff.symbols导入对应常量再查询,不要直接传字符串键。
内容的提问来源于stack exchange,提问作者Jennifer Crosby
相关产品推荐
相关产品推荐

