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