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

如何对值为列表的Python字典进行数据过滤并实现分类求和

实现方法

纯原生Python实现(无需第三方库)

直接通过生成器表达式遍历索引匹配条件累加即可,代码如下:

bd = {
     'portfolio': ['long_term', 'medium_term', 'short_term', 'long_term', 'short_term'], 
     'asset_type':['stock', 'etf', 'bonds', 'bonds', 'stock'],
     'value':[2000, 3000, 5000, 8000, 1000]
}

# 统计portfolio为long_term的value总和
long_term_total = sum(val for idx, val in enumerate(bd['value']) if bd['portfolio'][idx] == 'long_term')
# 统计asset_type为stock的value总和
stock_total = sum(val for idx, val in enumerate(bd['value']) if bd['asset_type'][idx] == 'stock')

print(long_term_total) # 输出 10000
print(stock_total) # 输出 3000

如果需要高频做同类统计,可以封装通用函数简化调用:

def calc_filtered_sum(filter_field, filter_value, data):
    return sum(
        val for idx, val in enumerate(data['value']) 
        if data[filter_field][idx] == filter_value
    )

long_term_total = calc_filtered_sum('portfolio', 'long_term', bd)
stock_total = calc_filtered_sum('asset_type', 'stock', bd)

可选:pandas实现(适合复杂统计场景)

如果允许引入第三方库,用pandas处理结构化数据会更简洁:

import pandas as pd
df = pd.DataFrame(bd)

long_term_total = df[df['portfolio'] == 'long_term']['value'].sum()
stock_total = df[df['asset_type'] == 'stock']['value'].sum()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:42:03