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

Python更新JSON文件键值报错:unhashable type:'dict' 求助

解决JSON文件更新时的"unhashable type:'dict'"错误

错误原因分析

  • 字典不可作为字典键:你在循环中用processdetails(这是一个字典对象)作为Write_data的键,而字典属于不可哈希类型,无法作为字典的键使用,这直接触发了unhashable type:'dict'错误。
  • 变量大小写不一致:代码中定义的变量是write_data(小写w),但后续写的是Write_data(大写W),会引发未定义变量问题。
  • 文件写入时机不合理:每次循环都打开文件写入,既降低效率,也可能导致数据覆盖或写入不完整。

修正后的代码

import json

def function_to_retreive_path(process_id):
    # 替换为你的实际路径获取逻辑
    return f"updated_path_{process_id}"

# 读取JSON文件内容
with open("process_details.json", "r") as jsonfile:
    write_data = json.load(jsonfile)

# 遍历每个process,更新path字段
for processdetails in write_data['process']:
    new_path = function_to_retreive_path(processdetails['id'])
    # 直接修改当前字典的path属性,无需用字典当键
    processdetails['path'] = new_path

# 所有更新完成后,一次性写入文件
with open("process_details.json", "w") as outfile:
    json.dump(write_data, outfile, indent=4)  # indent参数优化JSON格式可读性

关键修正说明

  • 直接修改循环元素:processdetails是write_data['process']列表中的字典元素,修改它会直接同步到原数据结构,无需通过键值对间接访问。
  • 统一变量命名:确保write_data大小写全程一致,避免未定义变量错误。
  • 延迟文件写入:所有process的path更新完成后,再执行一次写入操作,减少IO开销,保证数据完整性。

内容的提问来源于stack exchange,提问作者Pechiyappan Raj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:05:20