Python字典的操作小技巧

您所在的位置:网站首页 py索引输出文字 Python字典的操作小技巧

Python字典的操作小技巧

2023-08-11 21:09| 来源: 网络整理| 查看: 265

字典是非常常用的一种数据结构,它与json格式的数据非常相似,核心就是以键值对的形式存储数据,关于Python中的字典做如下四点说明:

构造字典对象需要使用大括号表示,即{},每一个字典元素都是以键值对的形式存在,并且键值对之间用英文状态下的冒号隔开,即key:value。键在字典中是唯一的,不能有重复,对于字符型的键需要用引号引起来。值可以是单个值,也可以是多个值构成的列表、元组或字典。字典不再是序列,无法通过位置索引完成元素值的获取,只能通过键索引实现。字典与列表一样,都是可变类型的数据结构。

接下来介绍字典的可变性。关于可变性,仍然是对字典元素进行增加、删除和修改的操作,这些操作都可以通过字典的“方法”实现,下面将依次介绍字典的各个操作。

一、字典的索引/取值

首先介绍字典的键索引如何实现元素值的获取,举例如下:

dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']} # 打印字典 print(dict1) # 打印年龄对应的值 print(dict1['年龄']) # 打印性别对应的值 print(dict1.get('性别')) # 打印子女中的儿子姓名 print(dict1['子女']['儿子']) # 打印兴趣中的游泳 print(dict1['兴趣'][1])

结果:

{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌']} 33 男 张四 游泳

对于字典来说,它不再是序列,要想获取元素值,只能在索引里面写入具体的键; 在字典dict1中,键“子女”对应的值是另一个字典,属于dict1的嵌套字典,所以需要通过双层键索引获取张三儿子的姓名;键“兴趣”对应的值是列表,所以“游泳”这个值只能通过先锁定字典的键再锁定列表元素的位置才能获得。

二、字典元素的增加

针对字典元素的增加,可以使用如下三种方式实现,分别是setdefault方法、update方法和键索引方法。

2.1 setdefault

setdefault方法接受两个参数,第一个参数为字典的键,第二个参数是键对应的值。 例如:

dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']} # 往字典dict1中增加户籍信息 dict1.setdefault('户籍','合肥') print(dict1)

结果:

{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌'], '户籍': '合肥'} 2.2 update

update从字面理解是对字典的更新,关于update方法完成字典元素的修改可参见后面的内容,除此,它还可以增加元素,与setdefault不同的是该方法接受的是一个字典对象。 例如:

dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']} # 增加学历信息 dict1.update({'学历':'硕士'}) print(dict1)

结果:

{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌'], '学历': '硕士'} 2.3 键索引方法

第三种方法是通过键索引实现的,如果原字典中没有指定的键,就往字典中增加元素,否则,起到修改字典元素的功能。 例如:

{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌'], '身高': 178}

结果:

{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌'], '身高': 178} 三、字典元素的删除

关于字典元素的删除可以使用pop、popitem和clear三种“方法”实现。

3.1 pop

pop方法在列表中同样起到删除元素的作用,如果不传递任何值给pop方法,则表示删除列表末尾的一个元素,否则就是删除指定下标的一个元素,但是在字典中pop方法必须指定需要删除的键,否则就会引起语法错误;如果需要删除嵌套字典中的某个键,就必须先通过键索引取出对应的字典,然后使用pop方法完成嵌套字典元素的删除。 例如:

dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']} # 删除字典中的户籍信息 dict1.pop('性别') print(dict1) # 删除嵌套字典中女儿的姓名 dict1['子女'].pop('女儿') print(dict1)

结果:

{'姓名': '张三', '年龄': 33, '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌']} {'姓名': '张三', '年龄': 33, '子女': {'儿子': '张四'}, '兴趣': ['踢球', '游泳', '唱歌']} 3.2 popitem

popitem方法不需要传递任何值,它的功能就是任意删除字典中的某个元素。 一般会删除最后一个元素。所以这个方法使用较少。 例如:

dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']} # 删除字典中的任意一个元素 dict1.popitem() print(dict1)

结果:

{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}} 3.3 clear

clear方法则可以干净利落地清空字典中的所有元素. 例如:

dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']} # 清空字典元素 dict1.clear() print(dict1)

结果:

{} 四、字典元素的修改

正如“字典元素的增加”部分所提到的,也可以使用update方法和键索引方法完成字典元素的修改,具体如下面的例子所示。 需要注意的是,如果字典中的值是另一个字典或列表,需要先通过键索引实现字典元素的查询,然后在查询的基础上应用对应的修改方法即可(如update方法或“取而改之”的方法)。

4.1 update dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']} # 将年龄改为35 dict1.update({'年龄':35}) print(dict1)

结果:

{'姓名': '张三', '年龄': 35, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌']} 4.2 键索引 dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']} # 将年龄改为35 dict1['年龄'] = 35 print(dict1) # 将兴趣中的唱歌改为跳舞 dict1['兴趣'][2] = '跳舞' print(dict1)

结果:

{'姓名': '张三', '年龄': 35, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌']} {'姓名': '张三', '年龄': 35, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '跳舞']} 五、取出字典的键、值、键值对的方法

keys、values和items方法分别取出字典中的所有键、值和键值对。 例如:

dict2 = {'电影':['三傻大闹宝莱坞','大话西游之大圣娶亲','疯狂动物城'], '导演':['拉吉库马尔·希拉尼','刘镇伟','拜伦·霍华德 '], '评分':[9.1,9.2,9.2]} # 取出键'评分'所对应的值 print(dict2.get('评分')) # 取出字典中的所有键 print(dict2.keys()) # 取出字典中的所有值 print(dict2.values()) # 取出字典中的所有键值对 print(dict2.items())

结果:

[9.1, 9.2, 9.2] dict_keys(['电影', '导演', '评分']) dict_values([['三傻大闹宝莱坞', '大话西游之大圣娶亲', '疯狂动物城'], ['拉吉库马尔·希拉尼', '刘镇伟', '拜伦·霍华德 '], [9.1, 9.2, 9.2]]) dict_items([('电影', ['三傻大闹宝莱坞', '大话西游之大圣娶亲', '疯狂动物城']), ('导演', ['拉吉库马尔·希拉尼', '刘镇伟', '拜伦·霍华德 ']), ('评分', [9.1, 9.2, 9.2])])

【Note】: get方法的功能与键索引已知,可以从字典中取出键对应的值。所不同的是,如果某个键在字典中不存在,应用键索引的方法会产生“键错误”的信息;而get方法则不会报错,也就不会影响其他脚本的正常执行。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3