一.什么是字典
字典是python里的一种数据类型,特点是元素的无序性,和键key的唯一性。字典的创建方法是{key:values},字典里的键key只能是不可变的数据类型(整型,字符串或者是元组),值values可以是任何数据类型。字典里的一组key:values叫做一个键值对item。
二.字典的基本操作
创建一个字典
dic = {'name':'joy','age':'28','hobby':{'girl_name':'xiaohan','age':23},'is_handsome':True}
另外一种创建方式,通过关键字创建 dict
代码段
dic2 = dict((('name','joy'),)) print("元组的方式创建字典:",dic2) dic3 = dict([['name','joy'],]) print("列表的方式创建字典:",dic3)
输出结果
元组的方式创建字典: {'name': 'joy'} 列表的方式创建字典: {'name': 'joy'}
三.查看字典 keys、values、items
代码段
dic = {'name':'chenzhang','age':27} dic1 = dic['age'] # print("通过键去取值:",dic1) dic5 = {'age':18,'name':'joy','hobby':'boy'} print("通过键去取值:",dic5['hobby']) dic6 = {'age':18,'name':'joy','hobby':'boy'} print("使用列表的格式,查看字典的键:",list(dic6.keys())) print("使用列表的格式,查看字典的值:",list(dic6.values())) print("用列表的格式,查看字典的键值对:",list(dic6.items()))
输出结果
通过键去取值: 27 通过键去取值: boy 使用列表的格式,查看字典的键: ['age', 'name', 'hobby'] 使用列表的格式,查看字典的值: [18, 'joy', 'boy'] 用列表的格式,查看字典的键值对: [('age', 18), ('name', 'joy'), ('hobby', 'boy')]
四.新增键值对 setdefault
代码段
dic4 = {'name':'joy'} dic4['age'] = 18 print("新增键值对:",dic4) ret = dic4.setdefault('age',32) print("如果键存在,不修改键值对,返回原有值:",ret) ret = dic4.setdefault('shengao',168) print("如果键不存在,新增键值对:",dic4)
输出结果
新增键值对: {'name': 'joy', 'age': 18} 如果键存在,不修改键值对,返回原有值: 18 如果键不存在,新增键值对: {'name': 'joy', 'age': 18, 'shengao': 168}
五.修改字典 fromkeys
代码段
dic7 = {'name':'陈璋','age':'23','hobby':'girl'} dic7['age'] = 27 # 通过键去修改值 print("通过键去修改值:",dic7) dic13=dict.fromkeys(['host1','host2','host3'],'test') print("使用formkeys方法,给每一键加上(test)值:",dic13) dict14= dict.fromkeys(['host1','host2','host3'],['test1','test2']) print("使用formkeys方法,给每一键加上(列表)值:",dict14) dict14['host2'][1]= 'test3' print("改字典中host2中test2的值:",dict14)
输出结果
通过键去修改值: {'name': '陈璋', 'age': 27, 'hobby': 'girl'} 使用formkeys方法,给每一键加上(test)值: {'host1': 'test', 'host2': 'test', 'host3': 'test'} 使用formkeys方法,给每一键加上(列表)值: {'host1': ['test1', 'test2'], 'host2': ['test1', 'test2'], 'host3': ['test1', 'test2']} 改字典中host2中test2的值: {'host1': ['test1', 'test3'], 'host2': ['test1', 'test3'], 'host3': ['test1', 'test3']}
六.更新 update
代码段
dic8 = {'age':18,'name':'joy','hobby':'girl'} dic9 = {'shengao':180,'name':'joychen'} dic8.update(dic9) print("更新,修改已有的键值对,增加没有的键值对:",dic8)
输出结果
更新,修改已有的键值对,增加没有的键值对: {'age': 18, 'name': 'joychen', 'hobby': 'girl', 'shengao': 180}
七.删除 clear pop popitem del
代码段
dic10 = {'name':'joychen','age':18,'class':1} dic10.clear() print("清空字典:",dic10) dic12 = {'name':'joychen','age':18,'class':1} ret = dic12.pop('age') print("删除字典中指定键值对,并返回该键值对的值:",ret) print("删除后的结果:",dic12) dic13 = {'name':'joychen','age':18,'class':1} a = dic13.popitem() print("随机删除某组键值对,并以元组方式返回值:",a) print("删除后的结果:",dic13) del dic13 # 删除这个字典
输出结果
清空字典: {} 删除字典中指定键值对,并返回该键值对的值: 18 删除后的结果: {'name': 'joychen', 'class': 1} 随机删除某组键值对,并以元组方式返回值: ('class', 1) 删除后的结果: {'name': 'joychen', 'age': 18}
七.多层嵌套大字典查询
代码段
# 种类大字典 class_dict = {"蔬菜":{"苦瓜":["很苦","有降火功效"], "南瓜":["比较甜","个头也比较大"],}, "水果":{"西瓜":["很甜","形状是圆的"], "橘子":["清甜可口","包含多种维生素"]}, "电器":{"空调":["凉爽","耗电"], "洗衣机":["快速洗衣","节省时间"], "微波炉":["快速加热","方便快捷"]}, "交通":{"自行车":["上坡费劲","适合短程"], "摩托车":["速度快","不安全"], "汽车":["适应多种天气","价格昂贵"]} } aa = class_dict["交通"]["摩托车"][1] #能过键去找值,最后通过索引号找到对应的信息 print(aa)
输出结果
不安全