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
相关产品推荐
相关产品推荐

