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

如何在Fit_Collection字典类中向列表添加Fit对象

问题解决:将Fit实例存入列表而非覆盖字典值

当前代码的问题在于Fit_Collection的fit方法每次直接用新的Fit实例覆盖对应项目的字典值,导致每个项目最终只保留最后一个实例。要实现每个项目对应一个Fit实例列表,只需修改fit方法的逻辑:

class Fit_Collection(dict):
    def __init__(self, *args, **kwargs):
        super(Fit_Collection, self).__init__(*args, **kwargs)
    def fit(self, *args, **kwargs):
        f = Fit(*args, **kwargs)
        # 检查项目是否已存在,不存在则初始化空列表
        if f.project_name not in self:
            self[f.project_name] = []
        # 将新的Fit实例追加到列表中
        self[f.project_name].append(f)
        return f

class Fit(object):
    def __init__(self, name, project_name):
        self.name = name
        self.project_name = project_name

project1 = ["fit1", "fit2", "fit3"]
project2 = ["fit11", "fit22"]

dictionary = Fit_Collection()
for item in project1:
    dictionary.fit(item, "project1")

for item in project2:
    dictionary.fit(item, "project2")

print(dictionary)

修改说明

  • 新增键存在性检查:当添加新的Fit实例时,先判断对应项目是否已在字典中,若不存在则创建空列表作为该键的初始值
  • 替换赋值为追加操作:不再直接用self[f.project_name] = f覆盖值,而是用append将新实例添加到列表末尾,这样每个项目会累积所有对应的Fit实例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 01:28:18