字典

字典 --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] = '啦啦啦'

集合

posted @ 2019-07-06 11:40  626  阅读(212)  评论(0编辑  收藏  举报