05_python_字典
一、字典定义
字典是python中唯一的映射类型,以{ }括起来的键值对组成,在dict中key是唯一的.在保存时,根据key来计算一个内存地址,然后把key-value保存至地址中.这种算法是hash算法.所以 key必须是不可变数据类型(即可hash的),value是不限制的,dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. ⽽hash表不是连续的. 所以不能进行切片操作. 它只能通过key来获取dict中的数据
可hash(不可变)数据类型: int str tuple bool
不可hash(可变)数据类型: list dict set
语法: dic = {key1: value1, key2: value2}
二、字典的增删改查
1、增
1 dic = {}
2 dic['name'] = '周润发' # 如果dict中没有出现这个key, 就会新增⼀个key-value的组
3 合进dict
4 dic['age'] = 18
5 print(dic)
6 # 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值
7 dic.setdefault('李嘉诚') # 也可以往⾥⾯设置值.
8 dic.setdefault("李嘉诚", "房地产") # 如果dict中已经存在了. 那么setdefault将不会
9 起作⽤
10 print(dic)
2、删除
1 ret = dic.pop('joy')
2 print(ret)
3
4 del dic['joy'] #key值删除
5 print(dic)
6
7 ret = dic.popitem() # 随机删除
8
9 dic.clear() # 清空字典中的所有内容
3、修改
dic = {"id": 123, "name": 'sylar', "age": 18}
dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}
dic.update(dic1) #把dic1中的内容更新dic中,如果key重名,则修改替换,如果不存在key,则新增
4、查询
# 查询一般用key来查找具体的数据
print(dic['name']) #如果查询的key不存在会报错
print(dic.get('ok'))
print(dic.get('syslay')) # None
print(dic.get('syalr', '牛')) #牛
三、字典其他操作
1 dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科⽐"}
2 print(dic.keys()) # dict_keys(['id', 'name', 'age', 'ok']) 不⽤管它是
3 # 什么.当成list用就行
4
5 for key in dic.keys():
6 print(key)
7
8 print(dic.values()) # dict_values([123, 'sylar', 18, '科⽐'])当list来⽤
9
10 for value in dic.values():
11 print(value)
12
13 print(dic.items()) # dict_items([('id', 123), ('name', 'sylar'), #
14 #('age',18), ('ok', '科⽐')]) 这个东⻄也是list. 只不过
15 #list中装的是tuple
16
17 for key, value in dic.items(): # ?? 这个是解构
18 print(key, value)
19
20 # 解构
21 a, b = 1, 2
22 print(a, b)
23
24 (c, d) = 3, 4
25 print(c, d)
26
27 e, f = [1, 2, 3] # 解构的时候注意数量必须匹配
28 print(e, f)
四、字典嵌套
1 # 字典的嵌套
2 dic1 = {
3 "name": "汪峰",
4 "age": 18,
5 "wife": {
6 "name": '章⼦怡',
7 "age": 28
8 },
9 "children": ['第⼀个⽑孩⼦', '第⼆个⽑孩⼦'],
10 "desc": '峰哥不会告我吧. 没关系. 我想上头条的'
11 }
12 print(dic1.get("wife").get("name"))