Python字典(dict)的操作方法汇总(约18种操作方法),并附示例代码

本文详细介绍了Python字典的创建方法,如fromkeys()和dict()函数,以及如何访问、更新、删除键值、使用内置函数如len()和str(),并探讨了浅拷贝与深拷贝的区别,以及常用的操作如get(), setdefault(), update(), pop()等。
摘要由CSDN通过智能技术生成

声明:博主(昊虹图像算法)写这篇博文时,用的Python的版本号为3.9.10。

字典(dict)的格式如下:

dict1 = {key1 : value1, key2 : value2, key3 : value3 }

从上面的格式我们可以看出:
字典的每个键值 key=>value 对用冒号分割,每个对之间用逗号分割,整个字典包括在花括号 {} 中。

另外字典要求键必须是唯一的,但值则不必。

01-字典的创建

# 创建有内容的字典
dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}

# 方法一创建空字典
dict2 = {}

# 方法二创建空字典
dict3 = dict()

运行结果如下:
在这里插入图片描述

01-附1-利用方法fromkeys()配合元组快速生成多键值字典

语法如下:

dict.fromkeys(keys, value)

keys —必需。指定新字典键的可迭代对象。
value—可选。所有键的值。默认值是 None。
第一个示例代码如下:

x = ('key1', 'key2', 'key3')
y = 0

dict1 = dict.fromkeys(x, y)

运行结果如下:
在这里插入图片描述
第二个示例代码:

x = ('key1', 'key2', 'key3')
y = (61, 62, 63)

dict1 = dict.fromkeys(x, y)

运行结果如下:
在这里插入图片描述
注意:key1的键值并不是61,而是元组(61, 62, 63),这 一点要注意。

第三个示例代码:

x = ('key1', 'key2', 'key3')
dict1 = dict.fromkeys(x)

运行结果如下:
在这里插入图片描述

01-附2-利用内置函数dict()以多种方式快速生成多键值字典

函数dict()至少可以以理三种方式快速生成多键值字典。
①通过“=”形式传入键名和键值来创建字典;
②通过Ptyhon内置函数zip()创建两个可迭代对象的映射关系来创建字典;
③通过两个元素的元组来创建字典;

示例代码如下:

dict1 = dict(a='a', b='b', t=5)  # 通过“=”形式传入键名和键值来创建字典
dict2 = dict(zip(['one', 'two', 'three'], [1, 2, 3]))  # 通过内置函数zip()创建两个可迭代对象的映射关系来创建字典
dict3 = dict([('one', 1), ('two', 2), ('three', 3)])   # 通过两个元素的元组来创建字典

运行结果如下:
在这里插入图片描述

02-字典值的访问

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}

str1 = dict1['name']
value1 = dict1[123]

运行结果如下:
在这里插入图片描述

03-更新字典某个键的值、新增键值

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}
k = 1
dict1['name'] = 'wanghong'  # 更新键name的值
dict1['height'] = 167  # 增加键值

运行结果如下:
在这里插入图片描述
提问:为什么中间有插一句语句"k = 1",答案见下面这篇博文:
https://blog.csdn.net/wenhao_ir/article/details/125416514

04-用del语句删除字典中的键值

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}
del dict1['name']

运行结果如下:
在这里插入图片描述

05-用del语句删除整个字典

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict2 = {'name': 'wanghong', 'likes': 'sing', 999: 704}
del dict1

运行结果如下:
在这里插入图片描述

06-用方法clear()清空字典

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict1.clear()

运行结果如下:
在这里插入图片描述

07-用函数len()统计字典键值对的个数

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}
len1 = len(dict1)

运行结果如下:
在这里插入图片描述

06-用函数str()将字典字符串化

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}
str1 = str(dict1)
print(str1)

运行结果如下:
在这里插入图片描述
在这里插入图片描述

07-使用方法copy()实现字典的深拷贝

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict2 = dict1.copy()
dict1['name'] = 'zhangsan'

在这里插入图片描述
从运行结果我们可以看出,方法copy()的确实现的是深拷贝,改变dict1的键值并没有影响到dict2的值。

08-使用“=”实现字典的浅拷贝

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict2 = dict1
dict1['name'] = 'zhangsan'

运行结果如下:
在这里插入图片描述
从上面的运行结果可以看出,dict1键值的修改影响了dict2的键值,说明二者是共用内存空间的。

09-使用“in”判断某键是否在字典里

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}
bool1 = 'name' in dict1
bool2 = 'weight' in dict1

运行结果如下:
在这里插入图片描述

10-使用方法items()获得字典键和值的视图对象

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict1_items = dict1.items()
print(dict1_items)

运行结果如下:
在这里插入图片描述
在这里插入图片描述
可见,这个视图对象就是把字典对象换了一种形式表示。
比如原来的键值形式为:

'name': 'suwenhao'

转换为视图对象(dict_items)后为下面这样的形式:

('name', 'suwenhao')

值得注意的是,原键值必变,对应的视图对象也会跟着改变,看一个例子:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict1_items = dict1.items()
dict1['name'] = 'zhangsan'
print(dict1_items)

运行结果如下图所示:
在这里插入图片描述
视图对象可以用函数list()转换为列表类型,如下面的例子:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict1_items = dict1.items()
list1 = list(dict1_items)

运行结果如下:
在这里插入图片描述
从上面的结果可以看出,转换为列表对象后,每一个键值是一个元组(tuple)。

关于视图对象,注意,我们不能对视图对象进行任何的修改,因为字典的视图对象都是只读的。

11-使用方法keys() 获得字典键的视图对象

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict1_keys = dict1.keys()
list1 = list(dict1_keys)

运行结果如下:
在这里插入图片描述
相关知识和说明请参考“10-使用方法items()获得字典键和值的视图对象”

12-使用方法values()获得字典键的值的视图对象

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict1_values = dict1.values()
list1 = list(dict1_values)

运行结果如下:
在这里插入图片描述
相关知识和说明请参考“10-使用方法items()获得字典键和值的视图对象”

13-1-使用方法get()返回某键的值

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}

str1 = dict1.get('name')

运行结果如下:
在这里插入图片描述

13-2-使用方法setdefault()返回某键的值(如果键不存在,则自动创建)

方法 setdefault()的语法如下:

dict.setdefault(key, default=None)

参数:
key – 查找的键值。
default – 键不存在时,设置的默认键值。
返回值:
如果 key 在 字典中,返回对应的值。如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None。
示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}

str1 = dict1.setdefault('name', 'zhangsan')
str2 = dict1.setdefault('likes', None)
temp1 = dict1.setdefault('weight', None)

运行结果如下:
在这里插入图片描述
结果分析:
由于键’name’是存在的,所以语句:

str1 = dict1.setdefault('name', 'zhangsan')

并不会改变其键值,并且返回了其键值‘suwenhao’
由于键’weight’是不存在的,所以在字典dict1中新增了键’weight’,其值设为None。

14-使用方法update()将一个字典的键值添加到另一个字典中

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict2 = {'weight': 30}

dict1.update(dict2)

运行结果如下:
在这里插入图片描述

15-使用方法pop()删除某对键值,并返回键的值

示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}

temp1 = dict1.pop('name')

运行结果如下:
在这里插入图片描述

16-使用方法popitem() 删除最后插入的键值,并返回键及其值

最后插入的键值通常就是末尾键值嘛。
示例代码如下:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456}

temp1 = dict1.popitem()

运行结果如下:
在这里插入图片描述

17-键在使用时需要注意的两点

1、不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

dict1 = {'name': 'suwenhao', 'likes': 'reading', 123: 456, 'name': 'zhangsan'}
str1 = dict1['name']

运行结果如下:
在这里插入图片描述
2、键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,如下面的语句:

dict1 = {['name']: 'suwenhao', 'likes': 'reading', 123: 456}

在运行时报错如下:
在这里插入图片描述

参考资料:
https://blog.csdn.net/wenhao_ir/article/details/125100220

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值