基本数据类型(dict)字典
一.字典
dict: 用{}来表示 键值对数据 {key:value} 唯一性
键 都必须是可哈希的 不变的数据类型就可以当做字典中的键
值 没有任何限制
已知的可哈希(不可变)的数据类型: int, str, tuple, bool 不可哈希(可变)的数据类型: list, dict, set
语法 : {key1: value1, key2: value2....}
注意: key必须是不可变(可哈希)的. value没有要求.可以保存任意类型的数据
# 合法
# dic = {'name':'chongzi','age':400}
# print(dic)
# dic = {1:'niubi',2:'wahaha'}
# print(dic)
# dic = {True: '德玛西亚',False: '无畏先锋'}
# print(dic)
# dic = {("黑色玫瑰","无畏先锋"):123}
# print(dic)
# 不合法
# dic = {[1, 2, 3]: '周杰伦'} # list是可变的. 不不能作为key
# dic = {{1: 2}: "哈哈哈"} # dict是可变的. 不不能作为key
# dic = {{1, 2, 3}: '呵呵呵'} # set是可变的, 不不能作为key
二.增删改查
1.增加
dic[key] = value
dic.setdefault(key,value) 如果键在字典中存在不进行任何操作,否则就添加
可以通过key查询,没有这个key返回None
# dic = {}
# dic['name'] = '周润发'
# 如果dict中没有出现这个key, 就会新增一个key-value的组合进dict
# dic['age'] = 18
# print(dic)
# 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值
# dic.setdefault('李嘉诚') # 也可以往⾥⾯设置值.
# dic.setdefault("李嘉诚", "房地产") # 如果dict中已经存在了. 那么setdefault将不会起作⽤
# print(dic)
2.删除
pop(key) 有返回值,返回的是被删除value
del dic[key]
popitem() 随机删除
clear() 清空字典
# dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'}
# ret = dic.pop('易大师') #通过key删除 返回被删除的value
# print(ret)
# del dic['剑豪']
# dic.clear() # {}
# ret = dic.popitem() #随机删除返回值一个元组 (key,value)
# print(ret)
# print(dic)
3.修改
dic[key] = value
dic. update(字典)
# dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'}
# dic['剑豪'] = '哈莎阁' # 强制修改
# dic1 = {'火女':'安妮','火男':'布兰德','维恩':'暗影猎手','剑豪':'哈莎阁'}
# dic1.update(dic)
# print(dic1
4.查询
get(key)
dic(key)
for 循环
setdefault(key)
# dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'}
# for 循环 元祖 键 值 键值对
# for i in dic:
# print(i) #for 循环默认是获取字典中的键
# print(dic['易大师父']) #查看1 没有这个键的时候查询会报错
# print(dic.get('易大师','你傻啊,没有!')) #查看2 没有返回None 可以指定返回内容
# print(dic.setdefault('易大师范湖')) #查看3 没有返回None
end = ' ' : 输出结果不换行
三.字典的其他操作
keys 获取到所有的键存在一个高仿的列表中
values 获取到所有的值存在一个高仿的列表中
items 获取到所有的键值对以元组的形式存在一个高仿的列表中
# dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科比"}
# print(dic.keys()) # dict_keys(['id', 'name', 'age', 'ok']) 不用管它是什么.当成list来用就行
# for key in dic.keys():
# print(key)
#
# print(dic.values()) # dict_values([123, 'sylar', 18, '科比']) 一样,也当 list来⽤用
# for value in dic.values():
# print(value)
#
# print(dic.items()) # dict_items([('id', 123), ('name', 'sylar'), ('age', 18), ('ok', '科比')])
# # 这个东西也是list. 只不过list中装的是tuple
#
# for key, value in dic.items(): # ?? 这个是解构
# print(key, value)
解构:
a,b = 1,2
a,b = (1,2)
a,b = [1,2]
a,b = {1,2}
a,b = '1,2' #错
# a,b = '12' #将后边解构打开按位置赋值给变量支持 字符串 列表 元组
# print(a)
# print(b)
# e,f = [1,2,3] # 解构时注意数量必须匹配
# print(e,f)
# dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'}
# for a,b in dic.items():
# print(a)
# print(b)
# 不常用
# dic1 = {}
# dics = dic1.fromkeys([1,2,3],'abc')
四.字典的嵌套
1 dic = {
2
3 'name':'汪峰',
4
5 'age':43,
6
7 'wife':{
8
9 'name':'国际章',
10
11 'age':39,
12
13 ' salary':100000
14
15 },
16
17 'babay':[
18
19 {'name':'熊大','age':18},
20
21 {'name':'熊二','age':15},
22
23 ]
24
25 }
26
27
28
29 dic['baby'][0]['age'] = 19
30
31 print(dic)