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

合并列表中moment枚举值相同的多组Credit对象技术问询

合并相同moment枚举值的Credit对象并累加value值

你需要合并列表中拥有相同moment枚举值的Credit对象,将它们的value值累加。先看个直观的示例:

输入:
[Credit(value=111, moment=<CreditMoment.APP: 'APP'>), Credit(value=222, moment=<CreditMoment.APP: 'APP'>), Credit(value=444, moment=<CreditMoment.OFFER: 'OFFER'>)]

预期结果:
[Credit(value=333, moment=<CreditMoment.APP: 'APP'>), Credit(value=444, moment=<CreditMoment.OFFER: 'OFFER'>)]

解决方案思路

核心是先按moment枚举值分组,累加每组的value,再重新构建Credit对象列表。下面是完整的可运行代码:

1. 定义基础类(如果还未定义)

from enum import auto, Enum
from typing import List

class CreditMoment(str, Enum):
    APP = auto()
    OFFER = auto()
    COMPLETION = auto()

class Credit:
    def __init__(self, value: int, moment: CreditMoment):
        self.value = value
        self.moment = moment
    
    def __repr__(self):
        # 自定义字符串展示,让结果更直观
        return f"Credit(value={self.value}, moment=<CreditMoment.{self.moment.name}: '{self.moment.value}'>)"

2. 实现合并函数

def merge_credits(credit_list: List[Credit]) -> List[Credit]:
    # 用字典分组存储每个moment对应的总value
    moment_value_map = {}
    for credit in credit_list:
        # 累加value:如果moment已存在就加,不存在就初始化
        moment_value_map[credit.moment] = moment_value_map.get(credit.moment, 0) + credit.value
    
    # 把字典转换回Credit对象列表
    return [Credit(value=total_value, moment=moment) for moment, total_value in moment_value_map.items()]

3. 测试验证

# 模拟你的输入
input_credits = [
    Credit(value=111, moment=CreditMoment.APP),
    Credit(value=222, moment=CreditMoment.APP),
    Credit(value=444, moment=CreditMoment.OFFER)
]

# 执行合并
result = merge_credits(input_credits)
print(result)
# 输出和预期完全一致:
# [Credit(value=333, moment=<CreditMoment.APP: 'APP'>), Credit(value=444, moment=<CreditMoment.OFFER: 'OFFER'>)]

额外说明

如果你的Credit类还有其他属性(比如fee_value这类),只要相同moment下这些属性是一致的,你可以在创建新Credit对象时一并传入;如果存在属性不一致的情况,你可能需要额外处理(比如保留第一个对象的属性,或者抛出提示)。

内容的提问来源于stack exchange,提问作者Radosław Hryniewicki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 14:27:46