Python字典六种类型概述


大米饭
大米饭 2023-11-29 09:34:54 54780
分类专栏: 资讯

01

引言

在看到这个标题,你可能会觉得奇怪,事实上在Python的标准库中共有6种字典类型!在某些情形下,你可能会觉得标准的Python字典dict,并不能完全符合你的需求。在本文中,我们将讨论Python中其他5个鲜为人知的词典及其特性。

 

 

闲话少说,我们直接开始吧!

 

02

字典的定义

 

在Python中,Dictionary(dict)是一种内置的数据结构,用于以键值对的形式存储数据集合。当然,你可能也听到过Python字典的其他名称,如查找表、映射、哈希映射等。

 

Python字典最常用的例子之一是电话簿。我们可以使用电话簿快速检索与给名字(key)相关的信息(value)。Python Dictionaries允许大家以最有效的方式存储和检索所需的数据;这就是为什么Python种的dict是这种编程语言中最常用的数据类型之一。

 

03

常用的字典类型

 

大多数Python开发人员通常只使用标准字典(dict)。有趣的是,Python提供了几个其他内置的字典数据结构。尽管在大多数情况下,常规的Python字典就足够了,但至少了解其他字典类型对于大家来说也是有益的,以防它们有朝一日派上用场。不同类型的Python词典归纳如下:

dict、collections.defaultdict、collections.OrderedDict、

collections.ChainMap、collections.Counter、collections.UserDict。

 

接下来我们逐一介绍以上字典及其经常应用的场景。

 

04

dict

 

正如上文提到的,Python中最常见的字典类型是标准dict类型。这种类型的Python字典可以很容易地与大括号{}一起使用。标准的Python字典附带了许多内置函数,使大家的日常编码更加轻松。

图片

 

请注意,Python字典中的值Value可以是任何类型,但键Key必须是唯一的和不可变的。一般情况,在标准Python字典中查找、插入、更新和删除操作的时间复杂度为O(1)。

 

05

collections.defaultdict

 

Python中字典的另一种类型是defaultdict,它可以从集合中导入。当你希望在从字典中调用不存在的键返回默认值时,推荐使用Python中的 defaultdict。

图片

Python开发人员在使用常规字典时通常使用get()方法,或者显式处理KeyError异常。在这种情况下,使用collections.defaultdict可以更加简洁。

 

06

collections.OrderedDict

 

collections.OrderdDict是在Python 3.1中引入的一个Python字典子类。正如大家可能从名称中猜到的那样,这种类型的Python字典可以记住键插入的顺序。如果你在实际应用中特别关心Python字典中键插入的顺序,则可以使用这种类型的字典OrderdDict 。

图片

collections.OrderdDict还有一个很酷的功能,可以更改某些键的顺序。这里大家可以使用move_to_end将其中一个键移动到Python字典的末尾(last=True)或开头(last=False),样例如下:

图片

 

07

collections.ChainMap

 

Python字典的另一种类型是ChainMap。Python中的ChainMap是一个类似字典的类,它可以将多个字典组合到一个视图中。Python中的这种类型的字典允许大家在多个字典中搜索关键字,就好像它们都合并到一个字典中一样。

图片

 

请注意,ChainMap将只返回大家正在搜索的关键字的首次出现。另外,请记住ChainMap只存储对实际对象的引用;因此,如果大家更改任何原始词典,ChainMap也将更新。

图片

 

08

 collections.Counter

 

Counter是Python字典中另一个能够计算可散列对象的字典。Python开发人员通常使用集合。Counter,主要用于计算可迭代对象中元素的频率;例如,大家可以使用这种类型的Python字典来计算一个句子中使用的单词数量。

图片

 

如果需要列出n个最常见的元素及其从最常见到最少见的计数,可以在Counter对象上使用most_common函数。如果n为None,则它将列出所有元素的计数。

 

09

 collections.UserDict

 

我们要讨论的最后一种Python字典类型的是UserDict。它也是collections模块提供的一个类。这个类被设计为用作基类来创建自定义的类似字典的对象。

 

想象一个简单的场景,如果你需要将每个值乘以5,同时将它们保存在自定义Python字典中。通过使用UserDict,您可以这样做:

图片

 

我们也可以通过重写其他函数,如__setitem__()、__getitem__()和__delitem__(),来进一步自定义字典的行为。

 

10

 总结

 

在本文中,我们介绍了可以在各种情况下使用的不同类型的Python字典。尽管许多Python开发人员都使用常规字典,但是在实际项目中始终可以自由使用其他类型的Python字典。如果没有一个字典适合您,您可以使用UserDict类来创建自己特有的字典。

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=29123
赞同 0
评论 0 条
大米饭L0
粉丝 0 发表 14 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2941
【软件正版化】软件正版化工作要点  2860
统信UOS试玩黑神话:悟空  2819
信刻光盘安全隔离与信息交换系统  2712
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1246
grub引导程序无法找到指定设备和分区  1213
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  163
点击报名 | 京东2025校招进校行程预告  162
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  160
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  157
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!