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
相关产品推荐
相关产品推荐

