字典
字典 --dict
dict = {键:值},存储数据字典的查找快一些
**字典是无序,可变的 **
定义一个字典:
dic = {'01':'邓新','2':'情哥哥','14':'小冯','98':'啦'}
# 字典中逗号分隔叫做一个元素 "01"(键):邓新(值) -- 键值对
print(dic)
'''
字典的键:
可哈希的 -- 不可变的数据类型 -- 避免哈希冲突使用了 开放寻址法
不可哈希的 -- 可变的数据类型
要求唯一 -- 如果有重复的后边值的将前面的值覆盖
字典的值:
可以任意
'''
增:
dic = {"11":[1,2,3],'啦': '89'}
dic[11] = '小米' # 暴力添加
print(dic)
dic.setdefault(99,'华为') # 99键 华为值
# 1.先去字典中通过99这个键去查有没有值
# 2.如果是值 就不添加
# 3.如果是None 就添加 返回的是添加的值
删:
del dic #删除整个字典
del dic[键] #通过键删除
print()
print(dic.pop(99)) # pop 通过指点键删除 pop也有返回值 返回的是被删除的值
dic.clear() #清空
print(dic)
dic.popitem() #随机删除 python3.6 删除最后一个 python3.5 随机删除
print(dic)
改:
dic1 = {'33':'jj','44':'TT'}
dic2 = {'33':'gg','66':'pp'}
dic1.update({'33':'gg','66':'yy'}) #更新 被更新的内容如果在 要更新的内容中那值就会覆盖
#两个字典中,都没有一样的就合并
dic1.update(dic2)
dic2['33'] = '啦' #字典的增 是字典中没有的时候才叫增,如果字典中键存在的时候才叫改
查:
dic1 = {'33':'jj','44':'TT'}
print(dic1['33']) #通过键查找 如果键不存在就报错
print(dic1.get('33')) #通过键查找 键不存在不报错 返回None
print(dic1.setdefault('33')) #不存在返回None
其他操作:
dic1 = {'33':'jj','44':'TT'}
for i in dic1:
print(i)
for i in dic1:
print(dic1.get(i))
for i in dic1.keys:
print(dic1.get(i))
print(dic1.keys()) # 高仿列表 dic—_keys(['33','66']) 不能使用下标
print(dic1.values()) # 高仿列表 dic—_values(['jj','TT']) 不能使用下标
# 取出键值
print(dic1.items()) # 取出键值 每部分用元组包起来
解构:
a,b,c = '4','5','6' ['4','5','6'] ('4','5','6') {'1':8,'2':9,'3':0} True,False,True
print(a,b,c)
for k,v in dic1.items():
print(k,b)
a,_,b = (3,4,5)
print(a,b) # 等号后边的值和前面的变量名要一一对应
#面试题
a = 10
b = 20
a,b = b,a
print(a,b)
字典的嵌套:
dic = {'汪峰':{'1':'la','2':'啦'},'陈冠希':{'张柏芝':'喜剧之王','阿娇':'千机变'}}
dic1 = dic['陈冠希']
print(dic1['张柏芝'])
补充:
dic2 = {'33':'gg','66':'pp'}
ret1 = dic2.get('99':'啦啦啦')
ret2 = dic2.pop('99':'没有')
print(ret1,ret2)
#坑:
dic3 = dict.formkeys([1,2,3,4,5],[1,2,3])
# 第一个是键 要是可迭代的对象
# 第二个是值,值是无所谓 是因为创建的新字典的值用的都是一个 值是一个可变数据类型
print(dic3)
dic3[3] = '啦啦啦'
集合