![Python 3.8从零开始学](https://wfqqreader-1252317822.image.myqcloud.com/cover/226/44510226/b_44510226.jpg)
5.2.2 字典的基本操作
字典的基本操作大部分与序列(sequence)类似,字典有修改、删除等基本操作。下面逐一进行具体的讲解。
1.修改字典
字典的修改包括字典的更新和新增两个操作。
字典的更新,是指对已有键值对进行修改,操作结果是保持现有键值对数量不变,但其中某个或某几个的键、值或键值发生了变更。
字典的新增,指的是向字典添加新内容,操作的结果是在字典中增加至少一个新的键值对,键值对数量会比新增之前至少多一个。
字典的更新和新增操作示例如下:
>>> student={'小萌':'000','小智':'001','小强':'002'} >>> print(f'更改前,student:{student}') 更改前,student:{'小萌': '000', '小智': '001', '小强': '002'} >>> xiaoqiang_num=student['小强'] >>> print(f'更改前,小强的序号是:{xiaoqiang_num}') 更改前,小强的序号是:002 >>> student['小强']='005' #更新小强的序号为005 >>> xiaoqiang_num=student['小强'] >>> print(f'更改后,小强的序号是:{xiaoqiang_num}') 更改后,小强的序号是:005 >>> print(f'更改后,student:{student}') 更改后,student:{'小萌': '000', '小智': '001', '小强': '005'} >>> student['小张']='003' #添加一个学生 >>> xiaozhang_num=student['小张'] >>> print(f'小张的序号是:{xiaozhang_num}') 小张的序号是:003 >>> print(f'添加小张后,student:{student}') 添加小张后,student:{'小萌': '000', '小智': '001', '小强': '005', '小张': '003'}
由输出结果可以看到,对字典的修改和添加操作均成功。
2.删除字典元素
此处字典元素的删除指的是显式删除,显式删除一个字典元素用del命令,操作示例如下:
>>> student={'小强': '002', '小萌': '000', '小智': '001', '小张': '003'} >>> print(f'删除前:{student}') 删除前:{'小强': '002', '小萌': '000', '小智': '001', '小张': '003'} >>> del student['小张'] #删除 键值为“小张”的键 >>> print(f'删除后:{student}') 删除后:{'小强': '002', '小萌': '000', '小智': '001'}
由输出结果可以看到,变量student在删除前有一个键为小张,值为003的元素,执行删除键为小张的操作后,键为小张,值为003的元素就不存在了,即对应键值对被删除了。所以在字典中,可以通过删除键来删除一个字典元素。
在Python中,除了可以删除键,还可以直接删除整个字典,例如:
>>> student={'小强': '002', '小萌': '000', '小智': '001', '小张': '003'} >>> print(f'删除前:{student}') 删除前:{'小强': '002', '小萌': '000', '小智': '001', '小张': '003'} >>> del student #删除整个字典 >>> print(f'删除后:{student}') Traceback (most recent call last): File "<pyshell#7>", line 1, in <module> print(f'删除后:{student}') NameError: name 'student' is not defined
由输出结果可以看到,通过删除变量student,就删除了整个字典。字典删除后就不能进行访问了,这是因为执行del操作后,字典就不存在了,字典变量(如上面的student变量)也不存在了,继续访问不存在的变量,就会报变量没有定义的错误。
3.字典键的特性
在Python中,字典中的值可以没有限制地取任何值,既可以是标准对象,也可以是用户定义的对象,但键不行。
对于字典,需要强调以下两点:
(1)在一个字典中,不允许同一个键出现两次,即键不能相同。创建字典时如果同一个键被赋值两次或以上,则最后一次的赋值会覆盖前一次的赋值,示例如下:
>>> student={'小萌': '000', '小智': '001', '小萌': '002'} #小萌赋两次值,第一次000,第二次002 >>> print(f'学生信息:{student}') 学生信息:{'小萌': '002', '小智': '001'} #输出结果中小萌的值为002
由输出结果可以看到,示例中对键为小萌的元素做了两次赋值操作,但输出结果中只有一个键为小萌的元素,并且对应值为第二次的赋值。
(2)字典中的键必须为不可变的,可以用数字、字符串或元组充当,但不能用列表,示例 如下:
>>> student={('name',):'小萌','number':'000'} >>> print(f'学生信息:{student}') 学生信息:{('name',): '小萌', 'number': '000'} >>> student={['name']:'小萌','number':'000'} Traceback (most recent call last): File "<pyshell#11>", line 1, in <module> student={['name']:'小萌','number':'000'} TypeError: unhashable type: 'list'
由输出结果可以看到,在字典中,可以使用元组做键,因为元组是不可变的。但不能用列表做键,因为列表是可变的,使用列表做键,运行时会提示类型错误。
4.len函数
在字典中,len()函数用于计算字典中元素的个数,也可以理解为字典中键的总数,示例如下:
>>> student={'小萌': '000', '小智': '001', '小强': '002','小张': '003', '小李': '004'} >>> print(f'字典元素个数为:{len(student)}') 字典元素个数为:5
由输出结果可以看到,通过使用len()函数,得到字典student变量中的元素个数为5。
5.type函数
type()函数用于返回输入的变量的类型,如果输入变量是字典就返回字典类型,示例如下:
>>> student={'小萌': '000', '小智': '001', '小强': '002','小张': '003', '小李': '004'} >>> print(f'字典的类型为:{type(student)}') 字典的类型为:<class 'dict'>
由输出结果可以看到,通过type()函数得到student变量的类型为字典(dict)类型。