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

Python中实现支持重复值的自定义集合:add方法编写求助

修正允许存储重复值的CloudTag类

首先,你的核心问题是用了set存储tags——set本身的特性就是自动去重,所以不管怎么写add方法,都不可能存重复值。得先把存储结构换成list,因为list支持重复元素。

再看你原add方法的逻辑问题:

  • 每次调用add都直接用self.tags = {*tag}覆盖原有数据,而不是追加新元素
  • if len(tag) in self.tags > 1是语法错误,逻辑也完全不通

下面是修正后的代码:

class CloudTag:
    def __init__(self):
        # 把set换成list,支持重复元素存储
        self.tags = []

    def add(self, *tag):
        # 用extend把传入的所有tag参数追加到列表里
        self.tags.extend(tag)

cloud = CloudTag()
cloud.add("ass", "jhs", 1, 1)
print(cloud.tags)  # 输出: ['ass', 'jhs', 1, 1]

关键修改说明:

  • 存储结构从set()改为[](空列表),保留重复元素的特性
  • add方法用self.tags.extend(tag)替代覆盖操作,extend会把传入的*tag元组里的每个元素依次加到列表末尾
  • 移除了无意义的if判断,因为我们的需求就是直接添加所有传入的标签,不管是否重复

这样调用cloud.add("ass", "jhs", 1, 1)后,tags里就会保留重复的1,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:55:34