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.66666666666667

items() 方法

语法

代码示例

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 区别

特性 Python 3 Python 2
keys() 返回 视图对象 列表
values() 返回 视图对象 列表
items() 返回 视图对象 列表
动态更新
内存占用

注意事项

提示:视图不是列表:视图对象不支持索引访问,需要用 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},找出它们共有的键,并计算共有键对应值的和。

标签: 字典方法 keys() values() items() 视图对象 遍历字典 Python教程

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: Python字典get方法 下一篇: Python字典pop()方法

poll相关推荐