基本数据类型(dict)
一丶字典的简单介绍
字典是python中唯一一个映射类型,他是以{}括起来的键值对组成,在dict 中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将key-value 保存在这个地址中.这种算法被称为hash算法,所以,切记,在dict中存储key-value中的key 必须是可以hash的,如果你暂时搞不懂什么是可哈希,暂时可以这样记住,可以改变的都是不可哈希的,那么可哈希就意外着不可变,刻个是为了能更准确的聚酸内存地址而规定的.
已知的可哈希(不可变) 的数据类型: int str tuple bool
不可哈希的(不可变)数据类型:list dict set
语法:
{key1:value1,key:value2....}
注意:key 必须是不可变的(可哈希)的,value没有要求,可以保存任意类型的数据

1 dic = {'name':'alex','age':9000} #字符串 2 print(dic) 3 4 dic = {1:'a',2:'b',3:'c'} #数字 5 print(dic) 6 7 dic = {True:'1',False:'0'} #布尔值 8 print(dic) 9 10 dic = {(1,2,3):'abc'} #元组 11 print(dic)
dict 保存的数据不是我们添加进去 的顺序保存的,是按照hash表的顺序保存的.而hash表不是
连续的,所以不能进行切片工作,只能通过key来获取dict中的数据
二丶字典的增删改查和相关操作
1.增加
dic['火女'] = '人头狗' # 新增 print(dic) dic.setdefault('火女','安妮') # 如果在字典中存在就不进行任何操作,不存在就进行添
dic.setdefault('火女','火男')
2.删除
ret = dic.pop('易大师') #通过key删除 返回被删除的value print(ret) del dic['剑豪'] dic.clear() # {} ret = dic.popitem() #随机删除 返回值 一个元组 (key,value) print(ret) print(dic)
3.修改
dic['剑豪'] = '哈莎阁' # 强制修改 dic1 = {'火女':'安妮','火男':'布兰德','维恩':'暗影猎手','剑豪':'哈莎阁'} dic1.update(dic) print(dic1)
4.查询
#for 循环 元组 键 值 键值对 for i in dic: print(i) #for 循环默认是获取字典中的键 print(dic['易大师父']) #查看1 没有这个键的时候查询会报错 print(dic.get('易大师','你傻啊,没有!')) #查看2 没有返回None 可以指定返回内容 print(dic.setdefault('易大师范湖')) #查看3 没有返回None
5.相关其他操作
keys values items print(dic.keys()) # (高仿列表) print(dic.values()) # (高仿列表) print(dic.items()) for i in dic.keys(): print(i) for i in dic: print(i) #获取到字典中的每一个键 for i in dic.values(): print(i) #获取到字典中的每一个值 for i in dic.items(): print(i)
5.1
# 解构(解包) a,b = '12' #将后边解构打开按位置赋值给变量 支持 字符串 列表 元组 print(a) print(b) dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'} for a,b in dic.items(): print(a) print(b) dic1 = {} dics = dic1.fromkeys([1,2,3],'abc')
三丶字典的嵌套
dic = { 'name':'汪峰', 'age':43, 'wife':{ 'name':'国际章', 'age':39, 'salary':100000 }, 'baby':[ {'name':'熊大','age':18}, {'name':'熊二','age':15}, ] } dic['baby'][0]['age'] = 19 print(dic)