Python字典的选用之道-把握六种类型的终极指南! (python编程)
一、简介
你或者会惊讶地发现,在Python的规范库中实践上有6种不同的字典类型!在某些状况下,开发者或者不想经常使用规范的Python字典(dict),在本文中将讨论Python中其余5种不为人知的字典。
每种字典类型都是为特定需求而设计的。了解这些字典类型可以让Python开发者选用适宜其特定需求的字典,从而提高编码效率和灵敏性。
二、Python字典是什么?
在Python中,字典(dict)是一种内置的数据结构,用于以键-值对的方式存储数据汇合。你或者听过Python字典的其余称号,如查找表、映射、哈希映射或关联数组。
Python字典的一个最片面的例子就是电话簿。可以经常使用电话簿极速检索与给定姓名(键)关系联的消息(值)。Python字典准许以最高效的方式存储和检索所需的数据;这就是为什么Pythondict是这种编程言语中最罕用的数据类型。
三、Python字典的类型
大少数Python开发者通常只经常使用规范字典(dict)。幽默的是,Python还提供了其余几种内置的字典数据结构。虽然在大少数状况下,规范Python字典曾经足够经常使用,但至少了解一下其余字典类型也会对开发者有所裨益。Python的不同字典类型如下:
本文将一一引见每种类型的Python字典,并经过示例启动解释。
如前所述,Python中最经常出现的字典类型是规范类型(dict)。这种类型的Python字典可以经常使用花括号{}来轻松创立和降级。规范Python字典内置了许多函数,可以让上班愈加轻松。
规范Python字典的经常使用示例
上方是代码片段。
a={'one':1,'two':2}print(a,type(a))#output:{'one':1,'two':2}<class'dict'>a.update({'three':3})#相当于a['three']=3print(a)#output:{'one':1,'two':2,'three':3}a['two']=2.1print(a['two'])#output:2.1
请留意,Python字典中的值可以是任何类型,但键必定是惟一且无法变的。普通状况下,在规范Python字典中启动查找、拔出、降级和删除操作的期间复杂度为O(1)。
3.2collections.defaultdict
Python中的另一种字典类型是defaultdict,可以从collections模块中导入。Pythondefaultdict字典用于想从字典中调用一个不存在的键时前往一个自动值。
经常使用Pythondefaultdict的示例
上方是代码片段。
fromcollectionsimportdefaultdicta=defaultdict(int)print(a['one'])#output:0a['one']+=1print(a['one'])#output:1
Python开发者在经常使用惯例字典时,通经常常使用get()方法或间接处置KeyError意外。在这种状况下,经常使用collections.defaultdict可以使开发者的用意愈加明白。
3.3collections.OrderedDict
collections.OrderedDict是Python3.1中引入的一种Python字典子类。望文生义,这种类型的Python字典可以记住键拔出的顺序。假设特意关心Python字典中键拔出的顺序,可以经常使用collections.OrderedDict。
经常使用PythonOrderedDict的示例
上方是代码片段。
fromcollectionsimportOrderedDicta=OrderedDict({'one':1,'two':2})print(a)#output:OrderedDict([('one',1),('two',2)])a['three']=3print(a)#output:OrderedDict([('one',1),('two',2),('three',3)])
collections.OrderedDict还有一个很酷的函数,可以扭转一些键的顺序。可以经常使用move_to_end将其中一个键移到Python字典的开端(last=True),或移到扫尾(last=False):
经常使用PythonOrderedDict的示例
上方是代码片段。
fromcollectionsimportOrderedDicta=OrderedDict({'one':1,'two':2,'three':3,'four':4})print(a)#output:OrderedDict([('one',1),('two',2)])a.move_to_end('one',last=True)#将'one'移至开端print(a)#output:OrderedDict([('two',2),('three',3),('four',4),('one',1)])a.move_to_end('three',last=False)#将'three'移到扫尾print(a)#output:OrderedDict([('three',3),('two',2),('four',4),('one',1)])
3.4collections.ChainMap
另一种Python字典类型是collections.ChainMap,Python的ChainMap是一种相似字典的类,可以将多个字典兼并为一个视图。这种类型的字典准许开发者在多个字典中搜查一个键,就如同它们都兼并成了一个繁多的字典。
经常使用PythonChainMap的示例
上方是代码片段。
fromcollectionsimportChainMapa={'one':1,'two':2}b={'three':3,'four':4}c={'five':5,'six':6,'three':3.1}merged=ChainMap(a,b,c)print(merged)#output:ChainMap({'one':1,'two':2},{'three':3,'four':4},{'five':5,'six':6,'three':3.1})print(merged['three'])#只前往关键字的第一次性产生结果#output:3
请留意,ChainMap只会前往要搜查的键的第一次性产生。另外还要记住,ChainMap只存储对实践对象的援用;因此,假设在任何一个原始字典中启动了更改,ChainMap也会随之降级。
经常使用PythonChainMap的示例
上方是代码片段。
fromcollectionsimportChainMapa={'one':1,'two':2}b={'three':3,'four':4}c={'five':5,'six':6,'three':3.1}merged=ChainMap(a,b,c)a['one']=1.1print(merged['one'])#output:1.1
3.5collections.Counter
Counter是Python中另一个能够计数可散列对象的字典。Python开发者通经常常使用collections.Counter来计算可迭代对象中元素的频率;例如,可以经常使用这种类型的Python字典来计算句子中经常使用的单词数量。
经常使用PythonCounter的示例
上方是代码片段。
fromcollectionsimportCountersentence="wecan'tcontrolourthoughts,butwecancontrolours"a=Counter(sentence.split(''))print(a)#output:Counter({'we':2,'control':2,'our':2,"can't":1,'thoughts':1,'but':1,'can':1,'words':1})print(a.most_common(2))#取得2个产生次数最多的元素#output:[('we',2),('control',2)]
假设须要列登程生频率最高的n个元素及其计数,从最经常出现到最不经常出现,可以在Counter对象上经常使用most_common函数。假设n为None,它将列出一切元素的计数。
3.6collections.UserDict
本文要讨论的最后一种Python字典类型是UserDict字典。UserDict也是collections模块提供的一个类。这个类设计成用作创立自定义字典类对象的基类。
当须要定义自己的相似字典的数据结构时,可以经常使用collections.UserDict。构想一个便捷的场景,须要将每个值乘以5并保留在自定义的Python字典中。经过经常使用UserDict,可以像这样成功:
经常使用PythonUserDict的示例
上方是代码片段。
fromcollectionsimportUserDictclassMyDict(UserDict):def__setitem__(self,key,value):super().__setitem__key,value*5)d=MyDict({'one':1,'two':2})print(d)#output:{'one':5,'two':10}
还可以随时笼罩其余函数,如__setitem__()、__getitem__()和__delitem__(),以进一步自定义字典的行为。
四、总结
在本文中,引见了可以在不同状况下经常使用的不同类型的Python字典。虽然很多Python开发者只经常使用惯例字典,但也可以在名目中尝试经常使用其余类型的Python字典。假设没有适宜的字典,可以经常使用UserDict类来创立自己的相似字典的类。
简单介绍Python中的几种数据类型
数据类型是每种编程语言必备的属性,只有给数据赋予明确的数据类型,计算机才能对数据进行处理运算,因此,使用正确的数据类型是十分有必要的,以下是Python编程常用的数据类型:一、数字型Python数字类型主要包括int(整型)、long(长整型)和float(浮点型),但是在Python3中就不再有long类型了。 1、int(整型)在32位机器上,整数的位数是32位,取值范围是-231~231-1,即-~;在64位系统上,整数的位数为64位,取值范围为-263~263-1,即~。 2、long(长整型)Python长整型没有指定位宽,但是由于机器内存有限,使用长的长整数数值也不可能无限大。 3、float(浮点型)浮点型也就是带有小数点的数,其精度和机器有关。 4、complex(复数)Python还支持复数,复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。 二、字符串在Python中,加了引号的字符都被认为是字符串,其声明有三种方式,分别是:单引号、双引号和三引号;Python中的字符串有两种数据类型,分别是str类型和unicode类型,str类型采用的ASCII编码,无法表示中文,unicode类型采用unicode编码,能够表示任意字符,包括中文和其他语言。 三、布尔型和其他编程语言一样,Python布尔类型也是用于逻辑运算,有两个值:True(真)和False(假)。 四、列表列表是Python中使用最频繁的数据类型,集合中可以放任何数据类型,可对集合进行创建、查找、切片、增加、修改、删除、循环和排序操作。 五、元组元组和列表一样,也是一种序列,与列表不同的是,元组是不可修改的,元组用”()”标识,内部元素用逗号隔开。 六、字典字典是一种键值对的集合,是除列表以外Python之中最灵活的内置数据结构类型,列表是有序的对象集合,字典是无序的对象集合。 七、集合集合是一个无序的、不重复的数据组合,它的主要作用有两个,分别是去重和关系测试。
python的内置字典数据类型为?
python中有六个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)、Dictionary(字典)字典只是其中之一
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。