2022-02-14 23:25:32
Python字典遍历的核心方法包括直接遍历、使用keys()/values()/items()视图对象,以及通过副本或推导式避免修改错误,同时可结合map()或推导式实现函数式遍历。
1. 基础遍历方法直接遍历字典等价于遍历keys()视图对象,适合仅需键的场景:
my_dict = {'a': 1, 'b': 2, 'c': 3}for key in my_dict: print(key, my_dict[key]) # 需通过键访问值遍历值(values())直接获取所有值,无需通过键:
for value in my_dict.values(): print(value)遍历键值对(items())同时访问键和值,效率最高的常用方法(Python 3返回视图对象,无需生成副本):
for key, value in my_dict.items(): print(key, value)使用enumerate获取索引适用于需要索引的场景(不常用):
for index, key in enumerate(my_dict): print(index, key, my_dict[key])若需同时访问键和值,items()是最佳选择,因其视图对象避免生成完整副本。
若仅需键或值,直接遍历keys()或values()更快。
实际性能建议:使用timeit模块测试,结果可能受Python版本和字典大小影响。
直接修改字典(如添加/删除键值对)会引发RuntimeError,解决方法如下:
遍历副本通过list(my_dict.keys())创建键的列表副本:
for key in list(my_dict.keys()): # 遍历副本 if my_dict[key] == 2: del my_dict[key]print(my_dict) # 输出: {'a': 1, 'c': 3}使用字典推导式生成新字典过滤或转换键值对:
new_dict = {k: v for k, v in my_dict.items() if v != 2}print(new_dict) # 输出: {'a': 1, 'c': 3}map()函数将函数应用于每个键值对(可读性较差,不推荐常规使用):
def print_key_value(item): key, value = item print(f"Key: {key}, Value: {value}")list(map(print_key_value, my_dict.items()))字典推导式创建新字典(常用于数据转换):
squared_values = {k: v2 for k, v in my_dict.items()}print(squared_values) # 输出: {'a': 1, 'b': 4, 'c': 9}