今天学习内容有:
成对的保存数据。 以key:value的形式保存
用{}表示,每一项内容都是key:value, 每项数据之间用逗号隔开
字典中的key是不能重复的。 存储是依靠着key来计算的
字典是使用hash算法计算key的哈希值. 使用哈希值来存储数据
哈希算法得到的是一个唯一的数字(可能是正数, 可能是负数, 很大或者很小)
哈希算法是无序的
字典中的key必须是可哈希的, 不可变的就是可哈希的
不可变: 字符串, 元组, int, bool
可变的: list, dict, set
字典的value随便。
增删改查
1. 增加
dic[key] = value
setdefault(key, value)
2.删除
pop(key)
popitem()
del dic[key]
clear()
3.修改
dic[key] = value
dic1.update(dict2)
4. 查询
dic[key] 可能会报错
dic.get(key)
dic.setdefault()
常见操作
keys() key的集合
values() value的集合
items() 键值对的集合(key,value)
a = 10
b = 20
a, b = b, a
for k, v in dic.items():
k, v
字典的迭代
for k in dic:
k
dic[k]
字典的嵌套
汪峰
代码练习见下:
## 增
dic = {}
# 方法一:
dic['Euan'] = '徐'
# 方法二:
dic.setdefault('jay','周杰伦') #若列表中没有出现过这个key则增加
print(dic)
dic.setdefault('jay','周星驰') #若列表中存在这个key,则不会发生改变
print(dic)
## 删
dic = {'Euan':'徐','jj':'林俊杰','jay':'周杰伦','小猪':'罗志杰'}
# 方法一:
dic.pop('Euan') #输入key值进行删除
# 方法二:
dic.popitem() #随机删除
print(dic)
# 方法三/四:(不常用)
# .claer() --> 清空字典中的所有内容
# del dic[key]
## 改
dic = {'Euan':'徐','jj':'林俊杰','jay':'周杰伦',}
# 方法一:
dic['小猪'] = '罗志杰'
# 方法二:
dic1 = {'jj':'林俊杰','jay':'昆凌','小猪': '罗志杰'}
dic.update(dic1)
print(dic)
## 查
dic = {'Euan':'徐','jj':'林俊杰','jay':'周杰伦',}
# 方法一: dic[key]
print(dic['Euan'])
# print(dic['euan']) #若不存在key值,报错
# 方法二: dic.get(key,value)
print(dic.get('Euan'))
print(dic.get('uan','没有')) # 若不存在key值,返回None,若value处有值,则返回value
# 方法三: dic.setdefault
# 流程: 1. 先检测是否存在key,xxxx
# 2. 根据你给的key把value查询出来
dic = {"jay":"周杰伦"}
ret = dic.setdefault("jay_jj","林俊杰")
# 转化到字典中。 key1:[大于66的数据], key2:[小于等于66]
# 方法一:
print(dic, ret)lst = [11,22,33,44,55,66,77,88,99]
dic = {"key1":[], "key2": []}
for el in lst:
if el > 66:
dic['key1'].append(el)
else:
dic["key2"].append(el)
print(dic)
# 方法二
lst = [11,22,33,44,55,66,77,88,99]
dic = {}
for el in lst:
if el > 66:
dic.setdefault("key1", []).append(el)
else:
dic.setdefault("key2", []).append(el)
print(dic)
# 转化到字典中。 key1:[大于66的数据], key2:[小于等于66]
lst = [11,22,33,44,55,66,77,88,99]
dic = {}
for num in lst:
if num > 66:
dic.setdefault('key1',[]).append(num)
else:
dic.setdefault('key2', []).append(num)
print(dic)
# 常见操作
# .keys() --> key的集合
dic = {'Euan':'徐','jj':'林俊杰','jay':'周杰伦',}
print(dic.keys())
# .values() --> value的集合
print(dic.values())
# .items() --> 键值的所有集合 (key,value) item是元组
print(dic.items())
# 字典的迭代
for el in dic.items():
k, v = el # 解包,解构, 如 a, b, c = (1, 2, 3)
print(k,v)
# 可将以上内容简写为:
for k, v in dic.items():
print(k,v)
# 字典的嵌套 汪峰
wf = {
"name":"汪峰",
"age":42,
"hobby":"抢头条",
"代表作":["春天里","怒放的生命","北京 北京"],
"wife_now":{
'name':"章子怡",
"age":62,
"爱好":"打麻将"
},
"children": [{'id':1,"name":"汪涵"},{"id":2,"name":"汪才"}]
}
print(wf['wife_now']['爱好'])
# 汪峰的小儿子改名成 汪晓峰
wf['children'][1]['name'] = "汪晓峰"
print(wf)