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

Python读取JSON可视化触发TypeError: unhashable type: 'dict'问题求助

问题解决:读取嵌套JSON数据绘制Time-Nset图表

错误原因

你原来的代码直接遍历整个JSON的顶层键值对,但顶层字典只有一个键XML_Data,对应的值是嵌套的复杂字典。这时候yAxis里存的是这个大字典,matplotlib无法把字典作为坐标轴数据,所以抛出TypeError: unhashable type: 'dict'。

修正后的代码

要正确提取数据,需要逐层定位到嵌套层级里的Time和Nset数值列表,还要把JSON里的字符串类型数值转换成可绘图的数值类型:

import json
import matplotlib.pyplot as plt

# 安全读取JSON文件(自动关闭文件)
with open('1D1.json', 'r') as f:
    data = json.load(f)

# 提取X轴:Time数据,转换为整数类型
x_axis = [int(num_str) for num_str in data["XML_Data"]["Wsk3Vectors"]["X_Axis"]["Values"]["float"]]

# 提取Y轴:Nset数据(第一个Y轴条目),转换为整数/浮点数类型
y_axis = [int(num_str) for num_str in data["XML_Data"]["Wsk3Vectors"]["Y_AxesList"]["AxisData"][0]["Values"]["float"]]

# 绘制折线图
plt.grid(True)
plt.plot(x_axis, y_axis, color='maroon', marker='o')
plt.xlabel('Time (ms)')
plt.ylabel('Nset (1/min)')
plt.title('Time vs Nset Curve')

plt.show()

注意事项

  • 如果Nset的数值包含小数,把代码里的int换成float即可
  • 代码里的层级路径是根据你提供的JSON结构写的,如果实际JSON有细微差异,需要对应调整索引或键名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:35:41