一、认识字典
字典是成对的保存数据,以key:value的形式保存,用{}表示,每一项内容都是key:value,每项数据之间用逗号隔开
字典中的key是不能重复的。存储是依靠着key来计算的。
切记:在字典中存储的key-value中的key必须是可hash的,如果你搞不懂什么是哈希,暂时可以这样记,可以改变的都是不可哈希的,那么可哈希就意味着不可变,这个是为了能准确的计算内存地址而规定的。
已知的可哈希(不可变)的数据类型:str、int、tuple、bool
不可哈希(可变)的数据类型:list、dict、set
二、字典的增删改查
1、增加
dic[key] = value
setdefault(key, value)
1 dic = {}
2 dic['name'] = '周润发' # 如果dict中没有出现这个key, 就会新增⼀个key-value的组合进dict
3 dic['age'] = 18
4 print(dic)
5 # 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值
6 dic.setdefault('李嘉诚') # 也可以往⾥⾯设置值.
7 dic.setdefault("李嘉诚", "房地产") # 如果dict中已经存在了. 那么setdefault将不会起作⽤
8 print(dic)
字典增加操作
2、删除
pop(key)
popitem()
del dic[key]
clear()
1 ret = dic.pop("jay")
2 print(ret)
3 del dic["jay"]
4 print(dic)
5 # 随机删除.
6 ret = dic.popitem()
7 # 清空字典中的所有内容
8 dic.clear()
字典删除操作
3、修改
dic[key] = value
dic1.update(dict2)
1 dic = {"id": 123, "name": 'sylar', "age": 18}
2 dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}
3 dic.update(dic1) # 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存在key, 则新增.
4 print(dic)
5 print(dic1)
字典修改操作
4、查询
dic[key] 可能会报错
dic.get(key)
dic.setdefault()
1 print(dic['name'])
2 # print(dic['sylar']) # 报错
3 print(dic.get("ok"))
4 print(dic.get("sylar")) # None
5 print(dic.get("sylar", "⽜B")) # ⽜B
6 #流程:1. 先检测是否存在key,xxxx
7 # 2. 根据你给的key把value查询出来
8 #setdefault() 新增
9 dic = {"jay":"周杰伦"}
10 ret = dic.setdefault("jay_jj","林俊杰")
11 print(dic, ret)
字典查询操作
三、常见操作
keys() key的集合
values() value的集合
items() 键值对的集合(key,value)
1 dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科⽐"}
2 print(dic.keys()) # dict_keys(['id', 'name', 'age', 'ok']) 不⽤管它是什么.当成list来⽤就⾏
3 for key in dic.keys():
4 print(key)
5 print(dic.values()) # dict_values([123, 'sylar', 18, '科⽐']) ⼀样. 也当list来⽤
6 for value in dic.values():
7 print(value)
8 print(dic.items()) # dict_items([('id', 123), ('name', 'sylar'), ('age',18), ('ok', '科⽐')]) 这个东⻄也是list. 只不过list中装的是tuple
9 for key, value in dic.items(): # ?? 这个是解构
10 print(key, value)
11 # 解构
12 a, b = 1, 2
13 print(a, b)
14 (c, d) = 3, 4
15 print(c, d)
16 e, f = [1, 2, 3] # 解构的时候注意数量必须匹配
17 print(e, f)
四、字符串嵌套
# 字典的嵌套
dic1 = {
"name": "汪峰",
"age": 18,
"wife": {
"name": '章⼦怡',
"age": 28
},
"children": ['第⼀个⽑孩⼦', '第⼆个⽑孩⼦'],
"desc": '峰哥不会告我吧. 没关系. 我想上头条的'
}
print(dic1.get("wife").get("name"))
print(dic1.get("children"))
print(dic1.get("children")[1])