dict
dict key 必须是不可变数据类型,可哈希
value:任意数据类型
dict 优点:使用二分查询来搜索数据
存储了大量的关系型数据
特点:无序的
数据类型划分:可变数据类型,不可变数据类型
不可变数据类型:元祖,bool int str 可哈希
可变数据类型: list dict set 不可哈希
编辑一个字典:这样书写方便看清层级关系
dic = { 'name':['大猛','小孟'], 'py9':[{'num':71,'avg_age':18,}, {'num': 71, 'avg_age': 18, }, {'num': 71, 'avg_age': 18, }, ], True:1, (1,2,3):'wuyiyi', 2:'二哥', } print(dic)
字典的增删改查
dic = {'age': 18, 'name': 'ysg', 'sex': 'man',}
1)增 键值对、setdefault
dic['high'] = 180 #没有键值对 添加 print(dic) dic['age'] = 21 #有键值对 则值覆盖 print(dic) dic.setdefault("weight") #在没有值的情况下默认为 None print(dic) dic.setdefault("weight",152) #在有值且没有重复键的情况下添加 print(dic) dic.setdefault("name","abc") #在有值且有重复键的情况下不作任何操作 print(dic)
2)删 pop、clear、del
#dic.pop('age') print(dic.pop('age')) #有返回值 按键去删除 print(dic) print(dic.pop('hello',None)) #当删除时不确定有没有该键时,可以在后面设置返回值不认会报错 dic.clear() #清空字典 print(dic) del dict #删除字典 print(dic)
3)改 键值对、update
dic = {'age': 18, 'name': 'ysg', 'sex': 'man',} dic2 = {'age': 22, "weight":152} dic['age'] = 21 #有键值对 则值覆盖 print(dic) dic2.update(dic) #把 dic 追加给 dic2 print(dic) print(dic2)
4)查 dic.keys、dic.valuse、dic.items、for 循环、get、键值对(在不存在改键时报错,不推荐使用)
dic = {'age': 18, 'name': 'ysg', 'sex': 'man'} print(dic.keys(),type(dic.keys())) print(dic.values(),type(dic.values())) print(dic.items(),type(dic.items()))
for i in dic: print(i) for i in dic.keys(): print(i) for i in dic.values(): print(i) for i in dic.items(): print(i) v = dic['name'] print(v)
#键值对 v2 = dic['name1'] #报错 print(v2)
#get print(dic.get('name1')) #如果没有该键 可以设置返回值 print(dic.get('name1','不存在'))
dic = {'age': 18, 'name': 'ysg', 'sex': 'man'} #如何使用 for 循环,只打印 key 与 values for i in dic.items(): print(i) for k,v in dic.items(): print(k,v)
dict 嵌套
dic = { 'name':['alex','wusir','peipei'], 'py9':{ 'time':'1213', 'learn_money':19800, 'addr':'CBD', }, 'age':21 } #修改 age 的值 dic['age'] = 22 print(dic) #在 dic 中的 name 中添加 'ysg' dic['name'].append('ysg') print(dic) #把 name 中的第二个字符修改为大写 dic['name'][1] = dic['name'][1].upper() print(dic) #在 py9 中添加 count:5 dic['py9']["count"]=5 print(dic)
变态面试题
#怎么用一行代码实现值互换 a,b =1,2 print(a,b) a = 1 b = 2 a,b = b,a print(a,b) #列表元组同样适用 a,b = [1,2],[3,4] #会根据最大关系自动对应 print(a,b) a,b = (1,2) print(a,b)