Python 字典 keys() 方法

Python keys() 语法

keys() 是 Python 字典的一个方法,它返回字典的一个视图对象,该视图对象每一项是字典的键。

语法:

dict.keys()

说明:

keys() 方法不接收任何参数。

对于 keys() 方法,小伙伴们要清楚以下几点。

  • 字典视图对象是动态的。也就是说,如果字典的键发生变化(比如添加、删除或修改键),则 keys() 返回的视图也会自动更新,而无需重新调用方法。
  • 虽然字典视图对象看起来像一个列表,但它不是一个列表。我们不能对其进行索引访问,也不能直接对其进行切片。如果需要列表形式的键,可以使用 list() 函数将其转换为列表。
  • 字典视图对象支持迭代操作(比如可以对其进行 for 循环),并且支持一些集合操作(如 in 成员测试、len() 获取长度、以及与集合的交集、并集、差集等操作)。

字典视图对象

字典的 keys()、values() 和 items() 这 3 种方法返回的结果都不是列表,而是一种视图(view),也叫做字典视图对象。视图在字典内容变化时会动态更新,这就是需要使用 list() 函数来将结果转换为列表的原因。另外,该视图本质上是一个可迭代对象,因此我们可以使用 for 循环来迭代,并且可以使用 in 或 not in 来检查成员的资格。

Python keys() 摘要

使用频率
修改原字典
官方文档 查看
相关方法 values()items()

Python keys() 示例

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

示例 1:keys() 基本用法

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

运行结果如下。

dict_keys(['Jack', 'Lucy', 'Tony'])

分析:

字典的视图对象,本质上是一个可迭代对象。我们可以使用 list() 函数将其转换为一个列表。这里如果将 result = students.keys() 改为 result = list(students.keys()),再次运行后结果如下:

['Jack', 'Lucy', 'Tony']

所谓的视图对象,类似于 SQL 视图。修改原字典中的数据,那么视图对象的数据也会即时改变。请看下面例子。

示例 2:修改原字典

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

students['Lily'] = 6666
print(students)
print(result)

运行结果如下。

{'Jack': 1001, 'Lucy': 1002, 'Tony': 1003, 'Lily': 6666}
dict_keys(['Jack', 'Lucy', 'Tony', 'Lily'])

示例 3:转换为列表

students = {'Jack': 1001, 'Lucy': 1002}
result = list(students.keys())
students['Tony'] = 1003
print(result)

运行结果如下。

['Jack', 'Lucy']

分析:

从结果可以看出,通过 list() 转换后的列表是静态的,不随字典更新而更新。

示例 4:遍历字典的键

configs = {
    'theme': 'dark', 
    'font_size': 12, 
    'language': 'en'
}

for key in configs.keys():
    print(f'配置项: {key}')

运行结果如下。

配置项 : theme
配置项 : font_size
配置项 : language

分析:

我们可以直接使用 for 循环遍历 keys() 返回的视图对象,而无需先转换为列表,这样可以节省内存且性能高效。

Python keys() 高级用法

keys() 方法不只是用于简单地获取键。它的视图对象特性,可以让它在某些高级场景下特别有用,比如进行成员资格检查和集合操作。

1. 成员资格检查

keys() 方法返回的视图对象,可以用于快速检查某个键是否存在于字典中。

示例 5:keys() 与成员资格检查

d = {'a': 1, 'b': 2}
print('a' in d.keys())
print('c' not in d.keys())

运行结果如下。

True
True

分析:

keys() 方法搭配 in 或 not in 操作符,可以高效地判断字典中是否包含指定的键,从而避免了直接遍历字典的低效操作。

2. 集合操作

keys() 返回的视图对象可以转换为集合,从而支持 集合运算(如交集、并集等)。

示例 6:keys() 与集合操作

d1 = {'x': 1, 'y': 2}
d2 = {'y': 3, 'z': 4}
# 视图对象原生支持集合运算
common_keys = d1.keys() & d2.keys()
print(common_keys)

运行结果如下。

{'y'}

分析:

字典的 keys() 视图对象原生支持集合运算。我们可以直接利用它轻松找到两个字典中共同存在的键,或者进行并集、差集等操作。

上一篇: popitem()

下一篇: values()

给站长反馈

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

邮箱:lvyenet@vip.qq.com

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