一、字典
1、概述
字典是一个无序的、可修改的,元素呈键值对的形式(这种结构类型通常也称为映射,或者叫关系数组,也有叫哈希表的),以逗号分割的,以大括号包围的数据类型。字典中的每个元素由2部分组成,键:值。键必须是唯一的,但值不必,值可以取任何数据类型,但键必须是不可变的,所以可以用数字,字符串或元组充当,而用列表就不行。
字典和列表一样,也能够存储多个数据,字典中的值没有特殊的顺序。列表中找某个元素时,是根据下标进行的,如果下标很多,查找不方便。当索引不好用时,可以使用字典。由于字典是无序的,所以我们在定义字典和字典生成之后的元素的顺序是不同的。
2、定义
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} dict1 = { 'abc': 123, 98.6: 37 } print('利用get方法访问字典中的值:',dict.get('Age')) #利用get方法访问字典中的值 print('利用键名访问字典中的值:',dict['Age']) #利用键名访问字典中的值,把相应的键放入到方括号中 print('如果用字典里没有的键访问数据,报错:',dict['Ages']) #如果如果用字典里没有的键访问数据,会输出错误
输出结果:
注:get方法如果没有找到相应的值,就会输出None,后面也可以带默认的值,工作中常用。
3、列表内建函数
(1)添加和修改
代码实例:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} dict1 = { 'abc': 123, 98.6: 37, 'sse': 7} #添加、修改 dict.update(dict1) #update把dict1的键值对更新到dict print('update把dict1的键值对更新到dict:',dict) dict.update({'Age':'add'}) #如果键存在,覆盖之前的值; print('键存在输出覆盖后后的字典:',dict) dict.update({'Age':'add'}) #如果键不存在,在字典中添加键值对。 print('键不存在添加键值对后的字典:',dict) dict['like']='sing' #添加 print('输出添加后的字典:',dict) dict['like']='dance' #修改 print('输出修改后的字典:',dict)
输出结果:
(2)删除
代码实例:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} dict1 = { 'abc': 123, 98.6: 37, 'sse': 7} #删除 print('pop删除字典给定键 key 所对应的值:',dict1.pop(98.6)) print('popitem返回并删除字典中的最后一对键和值:',dict1.popitem()) del dict['Age'] # 删除键 'Name' print('输出del 删除键后的字典:',dict) dict.clear() # 清空字典 print('输出clear清空后的字典:',dict) del dict # 删除字典 print('输出del 删除后的字典:',dict['Age'])
输出结果:
(3)查找
代码实例:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} dict1 = { 'abc': 123, 98.6: 37 } #字典的取值 print('返回所有key的列表:',dict.keys()) print('返回所有value的列表:',dict.values()) print('get方法访问字典中的值:',dict.get('Age')) #利用get方法访问字典中的值,以键取值 print('get方法如果指定键不存在,默认返回None:',dict.get('Ages')) #get方法如果指定键不存在,默认返回None print('get方法指定键不存在时,可以指定返回内容:',dict.get('Ages','dd')) #get方法指定键不存在时,可以指定返回内容 print('setdefault方法访问字典中的值:',dict.setdefault('Age')) #利用setdefault方法访问字典中的值 dict.setdefault('Ages') #setdefault方法如果键不存在,在字典中添加键并将值默认设为None print('setdefault方法键不存在,在字典中添加键,值默认为none:',dict) dict.setdefault('Agess',7) #setdefault方法如果键不存在,可以设置自定义值 print('setdefault方法键不存在,可以自定义值:',dict) print('items以列表返回可遍历的(键, 值) 元组数组:',dict.items()) #以列表返回可遍历的(键, 值) 元组数组 print('统计字典中的键值对个数:',len(dict)) print('输出字典,以可打印的字符串表示:',str(dict))
输出结果:
(4)总结
二、集合
1、概述
集合(set)是一个无序的、不重复的元素序列。与之前的列表、元组类似,可以存储多个数据,但是这些数据是不重复的。
2、定义
创建一个列表,可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。如下所示:
s1 = {'apple', 'orange', 'pink', 'pear', 'banana'} s2 = {1,2,3,4,5,6,4,3,3} s3=set() #创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典 print('输出空的集合的类型',type(s3)) print('集合元素不重复,存在重复元素时不输出',s2) #去重功能,集合中没有重复的元素
输出结果:
3、集合间的运算
代码实例:
s1 = {'apple', 'orange', 'pink', 'pear', 'banana'} #集合间的运算 s4={'pear', 'banana', 'yellow', 'green', 'red'} print('输出交集',s1&s4) #两个集合的公共部分 print('输出并集',s1|s4) #两个集合合并,没有重复元素 print('输出差集',s1-s4) #只存在s1中不存在s4中的元素 print('输出对称差集',s1^s4) #只有在s1或s4中,但是不会同时出现在二者中
输出结果:
4、集合的操作
(1)添加
代码实例:
s1 = {'apple', 'orange', 'pink', 'pear', 'banana'} s4={'pear', 'banana', 'yellow', 'green', 'red'} #添加 s1.add('potato') #将将元素添加到集合中,如果元素已存在,则不进行任何操作 print('输出add添加后的结果',s1) s1.update({'yellow', 'green'}) #参数可以是列表,元组,字典等 print('输出update添加后的结果',s1)
输出结果:
(2)删除
代码实例:
s1 = {'apple', 'orange', 'pink', 'pear', 'banana'} s4={'pear', 'banana', 'yellow', 'green', 'red'} #删除 s1.remove('banana') #将元素从集合中移除,如果元素不存在,则会发生错误 print('remove移除元素后的集合',s1) s1.discard('pear') #移除集合中的元素,如果元素不存在,不会发生错误 print('discard移除元素后的集合',s1) s1.pop() #随机删除集合中的一个元素 print('pop移除元素后的集合',s1)
输出结果:
三、各种数据类型比较
1、数据类型比较
2、可变类型与不可变类型
(1)可变类型:值可以改变------列表list、字典dict、集合set
(2)不可变类型:值不可以改变------数值类型(int,bool,float)、字符串 str、元组tuple
3、集合set、列表list、元组tuple之间可以相互转化
#集合set、列表list、元组tuple之间可以相互转化 str='hello world' print('字符串转列表输出:',list(str)) print('字符串转集合输出:',set(str)) print('字符串转元组输出:',tuple(str))
输出结果
4、通用方法整合
(1)常见操作
注:in在字典操作时,判断的是字典的键
(2)python内置函数