配色: 字号:
python数据类型串讲(下)
2020-03-25 | 阅:  转:  |  分享 
  
python数据类型串讲(下)在上一篇文章中讨论了python标准类型中序列的两种:列表和元祖,下面我们继续介绍python的第二种标准类型
:字典(dict)。1、字典dict顾名思义,字典就像我们日常生活中使用的新华字典,其作用在于根据索引(拼音或偏旁)快速查找到所需
内容,而python中的字典也是如此,python中字典的索引称为“键”(key),由python中不可变的数据类型(如字符串、数
值等)构成,具有固定(不可变)、唯一(不可重复)性;python中字典的内容称为“值”,其可以为python中的任意标准数据类型的
一种或多种。字典中由“键”和“值”构成的数据结构称为“键值对”,每个“键值对”之间用逗号(,)分隔开,其中键和值分别用冒号(:)分
隔,同时整个字典用花括号({})括起来,如下图所示:1.1字典的创建1.1.1直接创建根据上述字典的结构,可用花括号{}
直接创建一个字典。#用{}直接创建<<b'':2,''c'':3}1.1.2通过内置函数传入参数为键值对通过传入类似"a=1"形式的键值对创建,注意这里的键只能是字符
串类型,且不需要加引号。#通过内置函数dict()创建<<''b'':2,''c'':3}传入参数为元祖/列表通过传入一序列包含两个值的元祖或列表创建,第一个参数为键,第二个参数为值。需要注
意的是,当传入的参数为元祖时,元组内部的键值对个数要大于或等于2.#这四种方式创建的效果都一样<<,(''b'',2))){''a'':1,''b'':2}<<:2}<<[''b'',2]]){''a'':1,''b'':2}小技巧:可通过dict()结合python另一个内置函数zip()来快速创建字
典,先用映射函数zip()将两个长度相等的列表或元祖,根据对应位置压缩为一个包含n个元祖的列表(n为列表或元祖中元素的个数),再用
python的内置函数dict()将其转化为字典。#通过dict()和zip()创建<<<<3}1.2字典元素的增删查改先创建一个示例字典:#示例<<ges=(18,22,23)<<'':22,''Mick'':23}1.2.1元素的查找python提供了两种方式查找字典的元素,第一种是以键(key)作为索
引值,用中括号[]进行索引,与前面列表的索引用法一致;第二种通过内置函数get(),第一个参数为key,第二个参数为报错提示,默
认为None,如果在字典中查找到key,则返回key对应的值,如果查找不到key,则返回第二个参数的值。#用[]查找key为’C
C‘对应的values<<get(''CC'')22#用get()设置查找不到返回字符’Error!‘<<rror!''同时,也可以通过python关键字in判断某个元素是否存在于字典中,存在返回True,否则返回False。#用关键
字in判断元素存在与否<<<''Cc''indicFalse<<<''CC''indicTrue1.2.2元素的修改与列表中修
改元素的方法一致,字典也可以通过直接对查找出来的values进行赋值操作,从而达到修改元素值的效果。#将字典dic中索引为’Cc
‘对应的值改为24<<1.2.3元素的增加在上一步的操作中,当输入的key不存在于字典中时,则会新增加一对键值对,如果没有输入values,则默认v
alues为None。#新增一对键值对:键为’Jem‘,值为’32‘<<:18,''CC'':24,''Mick'':23,''Jem'':32}1.2.4元素的删除pop()语法:dict.pop
(key,[value])字典的pop()方法用于对原数组删除指定的key及其对应的values,并返回该键值对,第一个参数为需
要删除的key,第二个参数为不存在该key时返回的值。#删除dic中为’Jem‘的key及其value,并返回该键值对<<ic.pop(''Jem'')32<<除元素时若差找不到返回’Rrror!‘<<的pop方法区分开,列表中的pop()方法用于删除指定index索引处的value,若没有输入参数index,则会默认删除最后
一个元素。clear()语法:dict.clear()字典的clear()方法用于对原字典清除所有的键值对数据,无返回值。#将
dic里的所有数据删除<<似,根据给定的key删除键值对,但与pop()方法不同,del没有返回值,若key不存在,则会报KeyError错误。#用pyt
hon关键字del删除指定键值对<<3字典的常用方法1.3.1dict.keys()获取字典键值对中的键key#获取字典dic键值对中的键key<<.keys()dict_keys([''Amy'',''CC'',''Mick''])<<<[iforiindic.keys()
][''Amy'',''CC'',''Mick'']1.3.2dict.values()获取字典键值对中的值values#获取字典d
ic键值对中的值values<<iindic.values()][18,22,23]1.3.3len(dict)计算字典中元素的个数#计算字典di
c中元素的个数<<dict.items()以列表的形式返回可遍历的(键,值)元祖。#以列表的形式返回字典dic<<dict_items([(''Amy'',18),(''CC'',22),(''Mick'',23)])总结:字典的特点在于其无序
性,与序列不同,字典属于python的映射类型,其内部的元素是无序的,不能通过其位置来进行索引或切片,而是通过字典的键(key)进
行映射查找;同时,正是这种键值对的结构,使字典查找元素的速度提升很多,不需要像列表那样遍历列表内每个元素,list越长,耗时越长。
2、集合setpython中第三种数据类型的“容器”是集合(set),集合与字典(dict)相类似,其内部存储的元素是无序的,不
可以通过位置去进行索引等相关操作。与字典不同的是,集合中只有key,没有value,key可以由python中不可变的数据类型(如
字符串、数值等)构成,因此集合中的元素具有无序唯一性。集合的结构也和字典相类似,其内部元素用花括号{}括起来,如下图所示:2.
1集合的创建2.1.1用{}直接创建直接使用花括号{}将内部元素括起来即可创建一个集合:#用{}直接创建<<={''a'',''b'',''c''}<<去重<<<{''a'',''b'',''c'',''a''}{''a'',''b'',''c''}2.1.2用函数set()创建使用函数set()可
以将列表、元祖等可迭代对象转化为集合。#使用以下三种方式创建的效果一样<<b'',''c''}<<,''c'':3}){''a'',''b'',''c''}这里需要注意的是,若需要创建一个空集合,只能使用set()方法创建,不能使用花
括号{}来创建,因为{}创建的是一个空字典。2.2集合元素的增删由于集合内的元素是无序的,且只有键没有值,因此无法对集合进
行元素查找及修改操作,下面主要介绍集合中元素增加及删除的方法。2.2.1元素的增加set.add(key)使用集合的add(
)函数,可将新元素添加到集合中,注意每次只能添加一个元素。#使用add()添加元素<<''a'',''b'',''c'',''d''}set.update(key)使用update()函数可以一次性向集合中添加一个或多个元素,
当添加多个元素时,必须是以列表、元祖、字典的等可迭代对象的形式#使用update()添加元素<<,''f''])<<中pop()方法与列表中的用法相似,可以删除集合中一个元素并返回该元素,但因为集合的无序性,使用pop()方法不是删除最后一个
元素,而是随机删除。#使用pop()每次执行结果不一样<<''a'',''b'',''e'',''f''}set.remove()集合中remove()的用法也与列表相类似,可将集合内指定元素删
除但没有返回值,如果集合不包含该元素,则会报KeyError错误。#使用remove()删除指定元素<<''g'')KeyErrorTraceback(mostrecentcalllast)5e9d23575e7>in---->1se.remove(''g'')KeyError:''g''<<.remove(''f'')<<合也可以进行以下四种集合的基本操作:交集:set01&set02集合中实现两个集合进行交集运算的符号是“&”,同时也可以通过其
内置函数intersection()来实现。#用两种方法求集合se1和se2的交集<<<}并集:set01|set02集合中实现两个集合进行交集运算的符号是“|”,同时也可以通过其内置函数union()来实现。#
用两种方法求集合se1和se2的并集<<se1|se2{''a'',''b'',''c'',''d'',''e''}<<''d'',''e''}差集:set01-set02集合中实现两个集合进行差集运算的符号是“-”,同时也可以通过其内置函数dif
ferent()来实现,注意集合的前后顺序。#用两种方法求集合se1和se2的差集<<<
献花(0)
+1
(本文系CDA数据分析...原创)