Python 字典 pop() 方法

Python pop() 语法

pop() 是 Python 字典的一个方法,它用于删除字典中某个键值对。该方法会修改原字典,并且返回已删除键对应的值。

语法:

dict.pop(key, default)

说明:

pop() 方法接受以下 2 个参数。

  • key(必选):你要删除的键。
  • default(可选):当键不存在时,返回的值。

如果键不存在且未提供默认值,则 pop() 方法会引发 KeyError 异常。

提示: 列表也有类似的 pop() 方法,另请参阅:Python 列表 pop() 方法

Python pop() 摘要

使用频率
修改原字典
时间复杂度 O(1)
官方文档 查看
相关方法 popitem()clear()

Python pop() 示例

接下来,我们通过几个简单的例子来讲解 Python pop() 方法是如何使用的。

示例 1:pop() 只有 1 个参数

students = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
result = students.pop('Lucy')

print(students)
print(result)

运行结果如下。

{'Jack': 1001, 'Tony': 1003}
1002

分析:

如果键存在,则 pop() 方法会返回被删除键对应的值。如果键不存在,则 Python 会直接报错(抛出 KeyError 异常),请看下面例子。

示例 2:pop() 删除的键不存在

students = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
result = students.pop('Lily')

print(students)
print(result)

运行结果如下。

(报错)KeyError: 'Lily'

示例 3:pop() 带 2 个参数

students = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
result = students.pop('Lucy', 6666)

print(students)
print(result)

运行结果如下。

{'Jack': 1001, 'Tony': 1003}
1002

分析:

students.pop('Lucy', 6666) 表示如果 'Lucy' 这个键不存在时,就会使用 6666 作为返回值。但事实是,这里的 'Lucy' 是存在的,所以返回的是 'Lucy' 键对应的值(即 1002)。

如果将 students.pop('Lucy', 6666) 改为 students.pop('Lily', 6666),再次运行后结果如下:

6666

示例 4:get() 与 pop() 链式调用

data = {
    'user': {
        'name': 'Alice', 
        'id': 'A001'
    }, 
    'status': 'active'
}

# 删除嵌套字典中的键
id_value = data.get('user', {}).pop('id', 'N/A')
print(id_value)
print(data)

运行结果如下。

A001
{'user': {'name': 'Alice'}, 'status': 'active'}

分析:

在上面例子中,我们首先使用 get() 获取嵌套字典,然后再调用 pop() 可安全地删除嵌套键。如果外层键(如 'user')不存在,则 get() 返回空字典,从而避免 KeyError 异常。

pop() 与 popitem() 的区别

pop() 和 popitem() 这两个方法看着很像,但它们之间有着本质上的区别。

  • pop():删除的是指定的键值对,然后返回的是已删除键对应的值。
  • popitem():删除的是最后一个键值对,然后以元组方式返回被删除的键值对。

上一篇: update()

下一篇: popitem()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号