pin_drop当前位置:知识文库 ❯ 图文
Python字典keys() values() items()方法
概述
keys()、values() 和 items() 是字典最常用的三个视图方法,分别返回字典的键、值和键值对视图。它们返回的是动态视图对象,而非静态列表,当字典发生变化时,视图内容会自动更新。掌握这三个方法是遍历和操作字典的基础。
keys() 方法
语法
代码示例
dict.keys()返回值:包含字典所有键的视图对象
代码示例
person = {"name": "Alice", "age": 25, "city": "Beijing"}
keys = person.keys()
print(keys)
print(type(keys))输出:
代码示例
dict_keys(['name', 'age', 'city'])
<class 'dict_keys'>转换为列表
代码示例
key_list = list(person.keys())
print(key_list)输出:
代码示例
['name', 'age', 'city']values() 方法
语法
代码示例
dict.values()返回值:包含字典所有值的视图对象
代码示例
person = {"name": "Alice", "age": 25, "city": "Beijing"}
vals = person.values()
print(vals)输出:
代码示例
dict_values(['Alice', 25, 'Beijing'])统计值
代码示例
scores = {"math": 95, "english": 88, "science": 92}
print(f"最高分: {max(scores.values())}")
print(f"平均分: {sum(scores.values()) / len(scores)}")输出:
代码示例
最高分: 95
平均分: 91.66666666666667items() 方法
语法
代码示例
dict.items()返回值:包含字典所有键值对(元组形式)的视图对象
代码示例
person = {"name": "Alice", "age": 25, "city": "Beijing"}
items = person.items()
print(items)输出:
代码示例
dict_items([('name', 'Alice'), ('age', 25), ('city', 'Beijing')])视图对象的动态特性
视图对象是动态的,当字典内容变化时,视图会自动更新:
代码示例
d = {"a": 1, "b": 2}
keys = d.keys()
print("修改前:", keys)
d["c"] = 3
print("修改后:", keys)输出:
代码示例
修改前: dict_keys(['a', 'b'])
修改后: dict_keys(['a', 'b', 'c'])遍历字典
遍历键
代码示例
scores = {"math": 95, "english": 88, "science": 92}
for key in scores:
print(key, scores[key])遍历值
代码示例
for val in scores.values():
print(val)遍历键值对
代码示例
for key, val in scores.items():
print(f"{key}: {val}")输出:
代码示例
math: 95
english: 88
science: 92与 Python 2 区别
注意事项
提示:视图不是列表:视图对象不支持索引访问,需要用
list()转换。
提示:遍历时修改:在遍历字典时不能添加或删除键,否则会抛出
RuntimeError。
提示:成员检查:视图对象支持
in运算符,且效率高于列表。
小结
-
keys()返回键视图,values()返回值视图,items()返回键值对视图 -
视图是动态的,字典变化时视图自动更新
-
遍历字典推荐使用
for k, v in dict.items() -
视图不是列表,需要转换后才能索引
常见问题
keys()、values() 和 items() 返回的是什么类型?
它们返回的是动态视图对象(dict_keys、dict_values、dict_items),而非列表。视图对象会随着字典内容变化自动更新。
如何对视图对象进行索引访问?
视图对象不支持索引访问,需要使用 list() 函数将其转换为列表后才能进行索引操作,例如 list(dict.keys())[0]。
遍历字典时能否添加或删除键?
不能。在遍历字典时添加或删除键会抛出 RuntimeError。如果需要修改字典,应先复制键列表再进行遍历。
Python 3 与 Python 2 的字典视图方法有什么区别?
Python 3 返回视图对象(内存占用低、动态更新),Python 2 返回静态列表(内存占用高、不动态更新)。
练习1
编写一个函数 invert_dict(d),将字典的键和值互换。如果有重复的值,将对应的键收集到列表中。例如 {"a": 1, "b": 2, "c": 1} → {1: ["a", "c"], 2: ["b"]}。
练习2
给定两个字典 dict1 = {"a": 1, "b": 2} 和 dict2 = {"b": 3, "c": 4},找出它们共有的键,并计算共有键对应值的和。
本文涉及AI创作
内容由AI创作,请仔细甄别