python中如何遍历一个字典_Python字典遍历技巧与实例

python中如何遍历一个字典_Python字典遍历技巧与实例
最新回答
许多

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])
2. 效率对比与选择建议
  • items() vs keys()/values()

    若需同时访问键和值,items()是最佳选择,因其视图对象避免生成完整副本。

    若仅需键或值,直接遍历keys()或values()更快。

    实际性能建议:使用timeit模块测试,结果可能受Python版本和字典大小影响。

3. 避免遍历时修改字典的错误

直接修改字典(如添加/删除键值对)会引发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}
4. 其他遍历方式(函数式编程)
  • 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}
5. 总结与最佳实践
  • 优先选择for循环:直观且高效,尤其是items()方法。
  • 避免修改遍历中的字典:使用副本或推导式确保安全。
  • 性能验证:通过timeit测试不同方法的实际效率。
  • 函数式方法慎用:map()和推导式适合特定场景,但可读性可能降低。