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

Python中对两个OrderedDict执行算术运算的方法及报错解决

解决OrderedDict算术运算报错并实现百分比差值计算

你遇到的TypeError是因为直接对OrderedDict对象和整数(或另一个OrderedDict)执行算术运算,Python不支持这种操作。同时你的代码中a的键是'a_key',b的键是'b_key',遍历a.keys()时b.get(key, 0)会返回0(b中无对应键),进一步触发OrderedDict与整数运算的错误。

要实现需求,需要遍历两个OrderedDict内部的键值对,取出列表中的数值计算后再组装成目标格式,修正后的代码如下:

from collections import OrderedDict

a = {'a_key': OrderedDict([('Max_Value', [2000]), ('Min_Value', [1000])])}
b = {'b_key': OrderedDict([('Max_Value', [1000]), ('Min_Value', [50])])}

# 提取两个OrderedDict对象
a_od = a['a_key']
b_od = b['b_key']

# 计算每个子键的百分比差值
result_od = OrderedDict()
for key in a_od.keys():
    # 取出列表中的数值(原数据值为单元素列表)
    a_val = a_od[key][0]
    b_val = b_od[key][0]
    # 计算百分比差值并保留两位小数
    percentage = round(((a_val - b_val) / b_val) * 100, 2)
    # 格式化为带%的字符串,保持列表结构
    result_od[key] = [f"{percentage}%"]

# 组装成目标字典
test_dict = {'c_key': result_od}
print(test_dict)

代码关键点说明

  • 先从外层字典中提取对应OrderedDict,避免外层键不匹配的问题;
  • 遍历OrderedDict的子键(Max_Value、Min_Value),取出列表内的数值进行算术运算;
  • 计算完成后将结果格式化为带%的字符串,并存回列表中,保持与原数据结构一致;
  • 最终将结果OrderedDict存入test_dict的'c_key'键下。

运行代码后,输出结果与你期望的一致:

{'c_key': OrderedDict([('Max_Value', ['100.0%']), ('Min_Value', ['1900.0%'])])}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:37:28