从set类型继承,并设计一个名为CountedSet的子类型。通过重载set类型的某些函数,使得CountedSet对象 可以统计并记录各个元素被放入集合的总次数。请通过裁判测试程序了解该类的接口。 【样例输入】 a b a q 【样例输出】 Element Count a - 2 b - 1 Count in Set: 2

时间: 2023-07-16 18:17:11 浏览: 230
以下是CountedSet类的实现: ```python from collections import defaultdict class CountedSet(set): def __init__(self, iterable=()): super().__init__(iterable) self.counter = defaultdict(int) for item in iterable: self.counter[item] += 1 def add(self, elem): super().add(elem) self.counter[elem] += 1 def remove(self, elem): if elem in self: super().remove(elem) self.counter[elem] -= 1 if self.counter[elem] == 0: del self.counter[elem] def __contains__(self, elem): return elem in self.counter def __iter__(self): return iter(self.counter) def __len__(self): return len(self.counter) def __str__(self): result = [] for elem in self.counter: result.append(f'{elem} - {self.counter[elem]}') return '\n'.join(result) + f'\nCount in Set: {len(self)}' ``` CountedSet类继承自set类,并通过重载add、remove、__contains__和__iter__等函数,实现了对元素的计数。其中,add函数在元素被添加到集合中时增加计数,remove函数在元素被从集合中删除时减少计数,__contains__函数判断元素是否在计数器中,__iter__函数返回计数器中所有元素的迭代器。此外,还实现了__len__函数和__str__函数,分别返回集合中元素的数量和以字符串形式表示的计数器信息。 以下是一个简单的测试程序: ```python s = CountedSet() s.add('a') s.add('b') s.add('a') s.add('q') print(s) s.remove('a') print(s) ``` 输出如下: ``` a - 2 b - 1 q - 1 Count in Set: 3 a - 1 b - 1 q - 1 Count in Set: 3 ```

相关推荐

最新推荐

recommend-type

基础电子中的一款反馈式主动降噪耳机的设计

然而,这种拓扑的一个主要缺点就是风噪声(Wind noise),因为它的降噪麦克风是直接暴露在环境中的。克服此缺点的方法之一就是采用反馈式主动降噪技术。此篇文章将说明采用ams的AS3435设计反馈式主动降噪耳机所需的...
recommend-type

基础电子中的DIY无极限:自己设计一款反馈式主动降噪耳机,其实很简单

然而,这种拓扑的一个主要缺点就是风噪声(Wind noise),因为它的降噪麦克风是直接暴露在环境中的。克服此缺点的方法之一就是采用反馈式主动降噪技术。此篇文章将说明采用ams的AS3435设计反馈式主动降噪耳机所需的...
recommend-type

css判断某元素的子元素个数并分别设置样式的方法

主要介绍了css判断某元素的子元素个数并分别设置样式的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
recommend-type

RFID技术中的RFID系统按照耦合类型进行分类

 在电感耦合系统中,读写器和电子标签之间的射频信号的实现为变压器模型,通过空间高频交变磁场实现耦合,该系统依据的是电磁感应定律,如图1所示。  图1 电感耦合  电感耦合方式一股适用于中、低频工作的近...
recommend-type

电子设计大赛结题报告.docx

电子设计大赛结题报告
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用matlab绘制高斯色噪声情况下的频率估计CRLB,其中w(n)是零均值高斯色噪声,w(n)=0.8*w(n-1)+e(n),e(n)服从零均值方差为se的高斯分布

以下是用matlab绘制高斯色噪声情况下频率估计CRLB的代码: ```matlab % 参数设置 N = 100; % 信号长度 se = 0.5; % 噪声方差 w = zeros(N,1); % 高斯色噪声 w(1) = randn(1)*sqrt(se); for n = 2:N w(n) = 0.8*w(n-1) + randn(1)*sqrt(se); end % 计算频率估计CRLB fs = 1; % 采样频率 df = 0.01; % 频率分辨率 f = 0:df:fs/2; % 频率范围 M = length(f); CRLB = zeros(M,1); for
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。