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

如何在Python中对列表内同名元素的quantidade字段值进行求和

实现相同name的quantidade求和的Python方案

嘿,这个需求在日常数据处理里挺常见的,我给你分享几种Python实现的方案,你可以根据自己的场景来选:

方法1:普通字典手动遍历(适合新手理解)

这种方法不需要依赖任何第三方库,逻辑直观,适合小数据量的场景:

# 原始数据
items = [{'name': 'Radio HF', 'quantidade': '1'}, 
         {'name': 'Radio HF', 'quantidade': '1'}, 
         {'name': 'chave fenda', 'quantidade': '2'}, 
         {'name': 'Coletes salva-vidas', 'quantidade': '3'}]

# 初始化空字典用来存累加结果
result_dict = {}

for item in items:
    name = item['name']
    # 注意:quantidade是字符串,要先转成整数才能求和
    qty = int(item['quantidade'])
    
    if name in result_dict:
        # 如果name已经存在,就累加数量
        result_dict[name] += qty
    else:
        # 如果是第一次遇到这个name,就初始化数量
        result_dict[name] = qty

# 把字典转回原来的列表字典格式(如果需要的话)
final_result = [{'name': key, 'quantidade': str(value)} for key, value in result_dict.items()]

print(final_result)
# 输出:[{'name': 'Radio HF', 'quantidade': '2'}, {'name': 'chave fenda', 'quantidade': '2'}, {'name': 'Coletes salva-vidas', 'quantidade': '3'}]

方法2:用collections.defaultdict(更简洁高效)

Python标准库的collections.defaultdict可以帮我们省去判断键是否存在的步骤,代码更简洁,效率也更高:

from collections import defaultdict

items = [{'name': 'Radio HF', 'quantidade': '1'}, 
         {'name': 'Radio HF', 'quantidade': '1'}, 
         {'name': 'chave fenda', 'quantidade': '2'}, 
         {'name': 'Coletes salva-vidas', 'quantidade': '3'}]

# 初始化一个默认值为0的字典
result_dict = defaultdict(int)

for item in items:
    # 直接累加,不存在的键会自动初始化为0
    result_dict[item['name']] += int(item['quantidade'])

# 转回列表字典格式
final_result = [{'name': key, 'quantidade': str(value)} for key, value in result_dict.items()]

print(final_result)

方法3:用Pandas(适合大数据量/数据分析场景)

如果你正在处理大量数据,或者本身就在用Pandas做数据分析,用groupby操作会非常方便:

import pandas as pd

items = [{'name': 'Radio HF', 'quantidade': '1'}, 
         {'name': 'Radio HF', 'quantidade': '1'}, 
         {'name': 'chave fenda', 'quantidade': '2'}, 
         {'name': 'Coletes salva-vidas', 'quantidade': '3'}]

# 把列表转成DataFrame
df = pd.DataFrame(items)
# 将quantidade列转为整数类型
df['quantidade'] = df['quantidade'].astype(int)

# 按name分组,对quantidade求和
grouped_df = df.groupby('name')['quantidade'].sum().reset_index()

# 转回列表字典格式
final_result = grouped_df.to_dict('records')

# 如果需要quantidade保持字符串类型,可以这样处理:
# final_result = [{'name': row['name'], 'quantidade': str(row['quantidade'])} for _, row in grouped_df.iterrows()]

print(final_result)

选择建议

  • 如果是小数据量,且不想引入额外依赖,选方法1或2;
  • 如果是大数据量或者日常做数据分析,方法3会更高效便捷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:09:10