You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 00:27:19