散列类型是什么:
就是无序列表,和有序序列一样的,都是储存数据的
特征:就是没有顺序,没有下标值,没有切片
有序序列:str,list,tuple
无序序列:set,dict
字典(dict)
定义:其实和列表差不多的功能,都是储存各种各样的数据,和列表不一样是:字典没有下标值但有键值对。
特征:有键值对 =》{key,value}
特点:可以修改
key值:就是键值
作用:是和下标值一样的功能,是标识位置的作用
特点:key值是唯一不变而且不可重复的值,(因为key值是程序员自己设置的,而下标值会移动(list插入或者删除,后面的位置是都发生了移动))
value值: 就是数值
特点:是数值,是可以重复的值(各种类型的数值)
思考一下:key值是不是全部数据类型还是固定哪些数据类型?
因为key值具有唯一不变且不可重复的特点,所以key值的数据类型是固定的,其固定的数据类型可为:str,tuple,bool,number(int float)
而value值的数据类型:全部数据类型
定义字典格式:(字典:{} 列表:[] 元组:() )
序列名 = {key1: value1,key2: value2,....}
#字典的定义
a= {1: 1, 1.0: 1, "1": 1, True: 1, (1,): 1}
print(a)
print(type(a))
字典方法:(增删改查)
增加与修改:
方式1:update( )
格式:dict.update({key: value}) #dict.update(新字典)
1. 如果输入的字典为相同的key值,只会修改value值,也就是更新value值 (可做修改功能)
2. 如果输入的字典没有相同key值,就会在字典的最右边加上字典数据 (可做增加功能)
方式2:dict[key] = value (也是经常用的,就是如果key值是int类型,这样写会和有序序列分不清)。
方式3:dict.setdefault( )
格式:dict.setdefault(key, default),数值的默认是None(空值,空值数据类型),如果你不写default就是None
注意:如果遇到相同的key值,是没有任何改变的,只有添加功能,没有修改
#定义字典
a= {"1":1,"2":2}
print(type(a)) #查看定义的字典类型
print(a["1"]) #字典的查找
#字典的增加,方式1:序列名.update(新字典)
a.update({"3":3})
print(a)
#方式2:序列名[key值] = value值
a[True] =4
print(a)
#方式3
a.setdefault("5",[1,2,3]) #key值"5"处的value值为[1,2,3]
print(a)
a.setdefault("a") # key值"a"处的value值为None
print(a)
删除:
方式1:pop() (和列表pop是差不多)
格式:dict.pop(key) (当dict.pop(key)中的key值在字典dict中没有时,运行会报错)
思考一下:value删除了,key值是否还存在 ?
key值和value值是一对存在,如果一个没有了,另一个就是会消失 (夫妻锁)
#定义字典
a= {"1":1,"2":2}
#字典的删除,方式1:字典名.pop(key值)
a.pop("1")
print(a)
a.pop("3") #因为key值"3"在字典a中不存在,所以运行会报错
print(a)
方式2:popitem()
格式:dict.popitem() #随机删除键值对,结果显示的是删除最右边一个键值对
方式3:del
del :和有序序列一样的也是有两种写法:
del 字典名 #物理删除
del 字典名[key] # 只能删除一个键值对,不能删除多个,因为字典为无序序列,不能进行切片多个删除
#定义字典
a= {"1":1,"2":2,"3":3}
#删除方式2:字典名.popitem()
a.popitem()
print(a)
#删除方式3:del
dela["1"] #删除"1"这个键值对
print(a)
dela #物理删除
print(a)
方式4:clear()
格式:dict.clear()
清空数值,留下一个空字典
#定义字典
a= {"1": 1, "2": 2}
a.clear()
print(a)
查询:
方式1:字典名[key值] 返回value值
注:列表、元组查找:序列名[index]
方式2:dict查询
格式:序列名.get(key, default=None)
有两种情况:
(1)key值存在:无论有没有设置default值,结果均返回value值
(2)key值不存在
①如果没有设置default值,返回None值
②如果设置default值, 返回设置的default值
#定义字典
a= {"1": 1, "2": 2}
#字典的查找:字典名[key值]
print(a["1"]) #返回1
#字典的查询:字典名.get(key,defaule)
#key值存在,无论是否设置default值,均返回value值
print(a.get("1")) #返回1
print(a.get("1","abc")) #返回1
#key值不存在
print(a.get("3")) #返回None
print(a.get("3","a")) #返回a
字典常用方法
1.items()
定义: 获取字典全部key值和value值,并以元组的形式放在列表里面
格式:dict.items()
#创建字典a
a= {"1": 1, "2": 2}
print(a.items()) #返回dict_items([('1', 1), ('2', 2)])
# dict_items([('1', 1), ('2', 2)])可以看作[('1', 1), ('2', 2)]
# list代表字典可以修改的,元组括起来就是传输中不能变的意思
2.values() ,keys()
定义:
values():获取字典全部的value值,输出list形式
keys():获取字典全部的key值,输出list形式
#创建字典a
a= {"1": 1, "2": 2}
print(a.values())
print(a.keys())
3.fromkeys( )
定义:用于创建或者批量创建相同数值的字典
格式:fromkeys(keys, default=None)
此时,所有的keys位置处的value值均为设置的default值,而当不设置default值时就是None
注意:fromkeys是没有任何添加功能的,需要另一个变量进行储存或者相同变量名覆盖
# 空字典
a= {}
b= ("1",2,True,"a","5")
a=a.fromkeys(b)
print(a) #返回{'1': None, 2: None, True: None, 'a': None, '5': None}
c=a.fromkeys(b,2)
print(c) #返回{'1': 2, 2: 2, True: 2, 'a': 2, '5': 2}
集合(set)
(1)集合没有key值,也没有index值,即没有标识,所以不能查询,只能用成员运算符in或者not in 看它在不在
(2)这个集合和数学的集合一样的道理,集合中的元素(数值)有三个特性:
①确定性:给定一个集合, 任给一个元素, 该元素或者属于或者不属于该集合,二者必居其一,不允许有模棱两可的情况出现。
②互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。(所以可用于去重)
③无序性
此外,集合中数值的类型是固定的,数值只能是:str,tuple,bool,number类型
作用:通常会用在去重,可将有相同数值的list或tuple转化为set类型后,去处重复数值后再强制转化为原来的类型。
格式:a = {数值1,数值2,....}
# 集合的应用:去重
#创建集合a
a={1,2,"3",4}
# 如何定义一个空集合
a=set() #a = {}为创建一个空字典
print(type(a))
#去除列表a中的相同数值
a= [1,1,1,2,2,3,4,4] #创建列表
a=set(a) #将列表转化为集合后
a=list(a)
print(a) #返回[1, 2, 3, 4]
常用方法
添加:add()
a={1,2,"3",4}
a.add(5) # 随机添加
print(a)
删除:
remove( ), discard( )
格式:集合名.remove(数值),discard(数值)
remove:如果数值不存在就是报错
discard:如果数值不存在。不会报错
a= {1}
# a.remove(2)
a.discard(1)
print(a)
集合并集,交集以及差集:
运算操作 | 描述 |
&(交集) | 获取两个集合相同的数值 |
|(并集) | 获取两个集合全部的数值 |
-(差集) | 获取左边集合中右边没有的数值 |