字典的认识和使用 day05
-
字典初识(dict)
-
{}括起来,以键值对形式存储的容器型数据类型
python3.6+字典就是有序的了,之前的字典都是无序。
-
数据类型的分类(可变与不可变):
- 可变(不可哈希)的数据类型:list dict set
- 不可变(可哈希)的数据类型:int str bool tuple
-
键必须是不可变的数据类型:int,str(bool tuple几乎不用)唯一的
-
值可以是任意数据类型,对象。
-
字典的优点:查询速度非常快,存储关联性的数据。
-
字典的缺点:以空间换时间。
- 字典的创建方式:
面试会考: 方式一: dic = dic((('one,1'),('two,2'),('three,3'))) print(dic)#{'one':1,'two':2,'three':3} 方式二: dic = dict(one=1,two=2,three=3) 方式三; dic = dict({'one':1,'two':2,'three':3})
-
验证字典的合法性:
键要是不可变的数据类型:int str tuple bool set list dict 不能作为键 键要是唯一的
-
-
字典的增删改查
#增 直接增加,有则改之,无则增加 setdefault 有则不变,无则增加 dic= {'name':'holting','age':13,'hobby':['好人','yangsheng']} #直接增加,有则改之,无则增加 # dic['sex'] = 'nan' # dic['age'] = 23 # print(dic) #setdefault 有则不变,无则增加 #dic.setdefault('hobby') # dic.setdefault('qq','qiulei') # dic.setdefault('age', 45) # print(dic) #删 #pop 按照键删除键值对,有返回值 #设置第二个参数,则无论字典中有无该参数都不会报错 # re = dic.pop('age') # ret = dic.pop('hobby','没有此键') # print(dic) # print(re) # print(ret) #clear 清空 # dic.clear() # print(dic) #del 按键删,值 # del dic['name'] # del dic['age'] # print(dic) #改 # dic['name'] = '太白' # print(dic) #查 #print(dic['hobby']) #print(dic['hobby1']) #get #l1 = dic.get('hobby') # l1 = dic.get('hobby7','没有此键sb') # 如果键不存在返回默认值None,可以设置返回值 # print(l1)
四个特殊的:keys values items update
#key()所有的键 values()所有的值 items()所有的键值对 # update 更新字典键值对 没有的键直接添加;有的键则更新值 # info = {"age":12, "status":True, "name":"wupeiqi","email":"xx@live.com"} # data = info.keys()#获取字典的所有键,返回一个“高仿”的列表 # print(data)#像for循环中,利用此来输出键值 # info = {"age":12, "status":True, "name":"wupeiqi","email":"xx@live.com"} # data = info.values() # print(data) # for val in info.values(): # print(val,type(val)) # info = {"age":12, "status":True} # info.update({'age':2,'hao':4}) # print(info)
-
字典的嵌套
dic = { 'name': '汪峰', 'age': 48, 'wife': [{'name': '国际章', 'age': 38},], 'children': {'girl_first': '小苹果','girl_second': '小怡','girl_three': '顶顶'} } # 1. 获取汪峰的名字。 # # 2.获取这个字典:{'name':'国际章','age':38}。 # # 3. 获取汪峰妻子的名字。 # 4. 获取汪峰的第三个孩子名字。 # print(dic['name']) # # print(dic['wife'],type(dic['wife'])) # # del dic['wife'] # # dic.pop('children') #print(dic) ls = dic['wife'] print(ls[0]['name'])#逐步通过索引获取
-
总结
字典查询速度快,数据的关联性强。
- 键不可变的数据类型,(str int tuple bool)
- 值:任意数据类型,对象
- 增删改查
- 字典的嵌套