day05
1. 字典
1.1 定义 {键:值} 大括号 键 冒号 值
- 以{ }括起来的键值对组成
- 字典是无序的,可变的数据类型
- 用于存数数据,字典比列表快,将数据和数据之间进行关联
1.1.1 字典的键
-
可哈希的--不可变的数据类型,避免哈希冲突使用了 开放寻址法
-
要求唯一 如果有重复的键后边值的将前面的值覆盖
-
可以是:int, str, tuple, bool.
-
不可为**list . dict. set (不可哈希的)
-
dic = {"大黑哥":[1,2,3],"大黑哥":89} print(dic) 结果: {'大黑哥': 89} 如果键相同,则后边的将前边的覆盖
1.1.2 字典的值
- 可以任意
1.2 字典的增
1.2.1 暴力添加,有键则改,没键则添加到末尾
dic = {"大黑哥":[1,2,3],"李文虎":89}
dic["大黑哥"] = 99 #暴力添加,有键则改,没键则添加到末尾
print(dic) #{'大黑哥': 99, '李文虎': 89}
dic["韩信"] = ["中国"]
print(dic) #{'大黑哥': 99, '李文虎': 89, '韩信': ['中国']}
1.2.2 dic.setdefault 有键则保持不变,没键则添加到末尾,只添加键,则打印返回值
dic = {"大黑哥":[1,2,3],"李文虎":89}
dic.setdefault("大黑哥",100) #"大黑哥"在字典中出现,故不添加
print(dic) #{'大黑哥': [1, 2, 3], '李文虎': 89}
dic.setdefault("韩星")
print(dic) #结果: {'大黑哥': [1, 2, 3], '李文虎': 89, '韩星': None}
print(dic.setdefault("韩星")) #结果: None
dic.setdefault("韩星","中国") #添加的键和值用**逗号**隔开
print(dic) #结果: {'大黑哥': [1, 2, 3], '李文虎': 89, '韩星': '中国'}
1.3 字典的删
1.3.1 通过键删除键值对
1.3.1 del 空格 dic(键) 一次只能删除一个
1.3.1 由于dic是无序的,不可通过索引删除
dic = {"大黑哥":[1,2,3],"李文虎":89}
del dic["李文虎"]
print(dic)
结果:
{"大黑哥":[1,2,3]}
dic = {"大黑哥":[1,2,3],"李文虎":89}
del dic["大黑哥","李文虎"]
print(dic)
结果:
报错
dic = {"大黑哥":[1,2,3],"李文虎":89}
del dic
print(dic) #结果:报错,全删了,未定义dic
lst = ["大黑哥",[1,2,3],"李文虎",89]
del lst
print(lst) #结果:报错,全删了,未定义lst
1.3.2 python3.6以上默认删除最后一个
dic = {"大黑哥":[1,2,3],"李文虎":89}
dic.popitem() #python3.6 默认删除最后一个
print(dic) #结果: {'大黑哥': [1, 2, 3]}
dic.popitem() #结果: ('李文虎', 89) #返回值是元组
1.3.3 清空
dic = {"大黑哥":[1,2,3],"李文虎":89}
dic.clear()
print(dic) #结果: {}
print(dic.clear()) #结果:None
1.3.4 pop() 删除
dic = {2:("你好"),"北京":"中国","石家庄":"河北"}
dic.pop("北京") #通过字典的键进行删除键值对
print(dic) # 结果 {2: '你好', '石家庄': '河北'}
print(dic.pop("北京")) #结果:中国 #返回值:返回的是被删除的值
1.4 字典的改
1.4.1 当update中的字典里没有dic中键值对就添加到dic字典尾部,如果有就修改里边的对应的值
dic = {2:"你好","北京":"中国","石家庄":"河北"}
dic1 = {"大黑哥":[88],"老黑哥":66,"北京":"首都"}
dic1.update(dic)
print(dic) #{2: '你好', '北京': '中国', '石家庄': '河北'}
print(dic1)
#结果: {'大黑哥': [88], '老黑哥': 66, '北京': '中国', 2: '你好', '石家庄': '河北'} #("首都"变"中国")
dic.update(dic1)
print(dic1) #{'大黑哥': [88], '老黑哥': 66, '北京': '首都'}
print(dic)
#结果: {2: '你好', '北京': '首都', '石家庄': '河北', '大黑哥': [88], '老黑哥': 66} #("中国"变"首都")
# update括号中的字典级别高于update前面的字典
1.4.2 dic[键] = 键 的修改方法
# dic["常鑫"] = "dsb" # 字典中没有某个键值对的时候就是添加,当键在字典中存在的时候就是修改
# print(dic) #有则改 无则加
1.5字典的查
1.5.1 循环打印字典的键
dic = {"大黑":(666),"小黑":[888],"老黑":True}
for i in dic:
print(i)
结果:
大黑
小黑
老黑
1.5.2 循环打印字典的值 dic.get()
dic = {"大黑":(666),"小黑":[888],"老黑":True}
for i in dic:
dic.get(i)
print(dic.get(i))
结果:
666 #数字
[888] #列表
True #布尔值
1.5.3 循环打印字典的键和值
dic = {"大黑":(666),"小黑":[888],"老黑":True}
for i in dic:
dic.get(i)
print(i,dic.get(i))
结果:
大黑 666
小黑 [888]
老黑 True
dic.setdefault