当前位置:首页 > 科技  > 软件

Python的集合模块,使用数据容器处理数据集合

来源: 责编: 时间:2023-11-08 09:11:31 403观看
导读简介Python是一种功能强大的编程语言,可以简化许多编程任务。它的标准库中有一个collections模块,提供了处理集合数据的有用容器数据类型。ChainMap类将多个字典合并为一个映射。Counter类用于计算列表或其他可迭代对象

简介

Python是一种功能强大的编程语言,可以简化许多编程任务。它的标准库中有一个collections模块,提供了处理集合数据的有用容器数据类型。0Th28资讯网——每日最新资讯28at.com

ChainMap类将多个字典合并为一个映射。Counter类用于计算列表或其他可迭代对象中元素的出现次数。OrderedDict类保持其键的插入顺序。0Th28资讯网——每日最新资讯28at.com

还可以使用UserDict、UserList和UserString类创建常见数据类型的自定义版本。defaultdict类允许为字典中不存在的任何键指定默认值。0Th28资讯网——每日最新资讯28at.com

deque类是一种双端队列,可以从两端追加和弹出元素。namedtuple类创建具有命名字段的元组子类,使得处理复杂的数据结构更加容易。0Th28资讯网——每日最新资讯28at.com

使用这些来自collections模块的类可以简化和优化代码。0Th28资讯网——每日最新资讯28at.com

1、ChainMap:合并多个字典

ChainMap类允许将多个字典合并为一个映射。当用户希望像处理单个实体一样搜索多个字典时,这非常有用。接下来看一下它是如何工作的:0Th28资讯网——每日最新资讯28at.com

from collections import ChainMapdict1 = {'a': 1, 'b': 2}dict2 = {'b': 3, 'c': 4}combined_dict = ChainMap(dict1, dict2)print(combined_dict['a'])  # 输出:1 (from dict1)print(combined_dict['b'])  # 输出:2 (from dict1)print(combined_dict['c'])  # 输出:4 (from dict2)

2、Counter:计数可散列对象

Counter类是一种高效计数可散列对象的方法。它提供了一种清晰简洁的方式来统计项目。以下是一个简单的示例:0Th28资讯网——每日最新资讯28at.com

from collections import Counterdata = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]counter = Counter(data)print(counter)  # 输出:Counter({4: 4, 3: 3, 2: 2, 1: 1})

3、OrderedDict:保持元素顺序

OrderedDict类会记住项目插入的顺序。在元素顺序很重要的情况下,这一点至关重要。查看以下的示例:0Th28资讯网——每日最新资讯28at.com

from collections import OrderedDictordered_dict = OrderedDict()ordered_dict['b'] = 2ordered_dict['c'] = 3ordered_dict['a'] = 1print(list(ordered_dict.keys()))  # 输出:['b', 'c', 'a']

4、UserDict、UserList、UserString:创建自定义容器

UserDict、UserList和UserString类提供了创建自定义字典类、列表类和字符串类对象的简便方法。可以从这些类继承,并根据需要自定义其行为。0Th28资讯网——每日最新资讯28at.com

from collections import UserDict, UserList, UserStringclass MyDictionary(UserDict):    def __missing__(self, key):        return f"Key '{key}' not found"my_dict = MyDictionary({'a': 1, 'b': 2})print(my_dict['c'])  # 输出:Key 'c' not found

在这个示例中,本文定义了__missing__方法,如果不存在需要寻找的键,则返回一个指示未找到键的字符串,而不是像传统字典那样引发KeyError异常。0Th28资讯网——每日最新资讯28at.com

5、defaultdict:为缺失的键设置默认值

defaultdict类是内置字典类的一个子类。它会自动为缺失的键提供默认值,从而防止KeyError异常。下面是一个示例:0Th28资讯网——每日最新资讯28at.com

from collections import defaultdictfruit_count = defaultdict(int)fruit_count['apple'] += 1print(fruit_count['apple'])  # 输出:1print(fruit_count['banana'])  # 输出:0 (default value for int)

6、deque:双端队列

deque类实现了双端队列,对于从两端高效地追加和弹出元素非常有用。它特别适用于实现队列和堆栈。0Th28资讯网——每日最新资讯28at.com

from collections import dequequeue = deque()queue.append(1)queue.append(2)queue.append(3)queue.append(4)queue.append(5)print(queue.popleft())  # 输出:1print(queue.popleft())  # 输出:2print(queue.pop())  # 输出:5print(queue) # 输出:deque([3, 4])

7、namedtuple:命名元组以提高可读性

namedtuple类创建了一种新类型的元组,可以使用命名属性访问其中的字段。这不仅提高了清晰度,还减少了由于索引不匹配而导致出错的几率。0Th28资讯网——每日最新资讯28at.com

from collections import namedtuplePerson = namedtuple('Person', ['name', 'age', 'gender'])person = Person('Alice', 30, 'female')print(person) # 输出:Person(name='Alice', age=30, gender='female')

结论

Python的collections模块是开发人员处理数据集合时的有用工具。它提供了各种类,可以帮助完成合并字典、计数项和保持数据顺序等任务。通过使用这些类,可以使编码过程更加高效。0Th28资讯网——每日最新资讯28at.com

此外,collections模块还允许创建自定义容器,并使用特殊的数据结构,如deque和namedtuple。这些结构可以进一步增强编程能力,并帮助开发者轻松解决复杂的问题。0Th28资讯网——每日最新资讯28at.com

选择正确的类对于任务非常重要,因为这可以简化甚至最复杂的编码挑战。通过使用collections模块,可以灵活选择适合工作的正确工具,并使编码过程更加高效。因此,请探索collections模块,看看它如何帮助完成编码项目!0Th28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-17672-0.htmlPython的集合模块,使用数据容器处理数据集合

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 多任务多场景问题解决方案与实践

下一篇: 八个提升编程体验的VS Code插件

标签:
  • 热门焦点
  • 7月安卓手机性价比榜:努比亚+红魔两款新机入榜

    7月登场的新机有努比亚Z50S Pro和红魔8S Pro,除了三星之外目前唯二的两款搭载超频版骁龙8Gen2处理器的产品,而且努比亚和红魔也一贯有着不错的性价比,所以在本次的性价比榜单
  • CSS单标签实现转转logo

    转转品牌升级后更新了全新的Logo,今天我们用纯CSS来实现转转的新Logo,为了有一定的挑战性,这里我们只使用一个标签实现,将最大化的使用CSS能力完成Logo的绘制与动画效果。新logo
  • 把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • 让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 在线图片编辑器,支持PSD解析、AI抠图等

    自从我上次分享一个人开发仿造稿定设计的图片编辑器到现在,不知不觉已过去一年时间了,期间我经历了裁员失业、面试找工作碰壁,寒冬下一直没有很好地履行计划.....这些就放在日
  • 一篇文章带你了解 CSS 属性选择器

    属性选择器对带有指定属性的 HTML 元素设置样式。可以为拥有指定属性的 HTML 元素设置样式,而不仅限于 class 和 id 属性。一、了解属性选择器CSS属性选择器提供了一种简单而
  • 超闭合精工铰链 彻底消灭缝隙 三星Galaxy Z Flip5与Galaxy Z Fold5发布

    2023年7月26日,三星电子正式发布了Galaxy Z Flip5与Galaxy Z Fold5。三星新一代折叠屏手机采用超闭合精工铰链,让折叠后的缝隙不再可见。同时,配合处
  • 到手价3099元起!iQOO Neo8 Pro今日首销:安卓性能最强旗舰

    5月23日,iQOO如期举行了新品发布会,全新的iQOO Neo8系列也正式与大家见面,包含iQOO Neo8和iQOO Neo8 Pro两个版本,其中标准版搭载高通骁龙8+,而Pro版更
  • 最薄的14英寸游戏笔记本电脑 Alienware X14已可以购买

    2022年1月份在国际消费电子展(CES2022)上首次亮相的Alienware新品——Alienware X14现在已经可以购买了,这款笔记本电脑被誉为世界上最薄的 14 英寸游戏笔
Top