Python如何对字典中重复NAME对应的VALUE值求和
实现方案
你的代码存在3个明显错误:
- 变量名大小写不匹配:循环中定义的临时变量是大写
VALUE,累加时写的是小写value,会触发NameError - 打印逻辑错误:对字符串类型的key调用
list()会把单个字符拆分为列表元素,对整数类型的累加值调用list()会触发类型错误 - 未按要求的格式组织输出内容
以下是可直接运行的正确代码:
核心累加逻辑
dict_data = { "NAME": ['A', 'B', 'A', 'B', 'C', 'C'], "VALUE": [100, 200 , 100 , 200, 300, 300] } # 初始化去重的NAME键,初始值为0 sum_result = dict.fromkeys(dict_data["NAME"], 0) # 遍历配对的NAME和VALUE,按NAME累加 for name, val in zip(dict_data["NAME"], dict_data["VALUE"]): sum_result[name] += val
第一种输出格式
逐行打印每个NAME和对应的累加值:
for name, total_val in sum_result.items(): print(f"NAME: {name}") print(f"VALUE: {total_val}")
输出结果:
NAME: A VALUE: 200 NAME: B VALUE: 400 NAME: C VALUE: 600
第二种输出格式
分别生成NAME列表和累加后的VALUE列表打印:
name_list = list(sum_result.keys()) value_sum_list = list(sum_result.values()) print(name_list) print(value_sum_list)
输出结果:
['A', 'B', 'C'] [200, 400, 600]
提示:Python 3.7及以上版本的原生字典默认保留键的插入顺序,输出顺序和NAME首次出现的顺序完全一致。如果使用更低版本Python,将初始化字典的
dict替换为collections.OrderedDict即可保证顺序正确。
内容的提问来源于stack exchange,提问作者Đặng Lực
相关产品推荐
相关产品推荐

