python怎么遍历一个字典_python字典遍历技巧与实例

python怎么遍历一个字典_python字典遍历技巧与实例
最新回答
﹎回★忆﹎

2022-01-27 04:00:51

Python字典遍历的核心方式包括遍历键、遍历值、同时遍历键值对,此外还有字典推导式、结合排序或使用ChainMap等高级技巧。以下是具体方法与实例:

一、核心遍历方式
  • 遍历键直接迭代字典对象或显式使用keys()方法,适用于仅需处理键的场景。

    my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}for key in my_dict: # 等价于 for key in my_dict.keys() print(f"键: {key}")
  • 遍历值使用values()方法直接获取所有值,适合统计或检查值是否存在。

    for value in my_dict.values(): print(f"值: {value}")
  • 遍历键值对使用items()方法同时获取键和值,避免重复查找,效率最高。

    for key, value in my_dict.items(): print(f"键: {key}, 值: {value}")
二、遍历时修改或删除元素

直接修改字典会引发RuntimeError,需通过以下方法规避:

  • 遍历副本修改创建键的副本(如list(my_dict.keys())),在副本上迭代并修改原字典。

    my_dict = {'a': 1, 'b': 2, 'c': 3}keys_to_delete = [key for key, value in my_dict.items() if value % 2 == 0]for key in keys_to_delete: del my_dict[key] # 输出: {'a': 1, 'c': 3}
  • 构建新字典通过过滤或转换生成新字典,避免直接修改原字典。

    original_dict = {'a': 1, 'b': 2, 'c': 3}filtered_dict = {k: v for k, v in original_dict.items() if v % 2 != 0} # 输出: {'a': 1, 'c': 3}
三、高级技巧与不常见用法
  • 字典推导式以紧凑方式创建新字典,支持过滤、转换或键值互换。

    # 过滤值大于2的键值对filtered_dict = {k: v for k, v in my_dict.items() if v > 2} # 输出: {'name': 'Alice', 'age': 30}# 键值互换(需值唯一且可哈希)inverted_dict = {v: k for k, v in my_dict.items()} # 输出: {'Alice': 'name', 30: 'age', ...}
  • 结合sorted()排序遍历对键或值排序后遍历,适用于需要有序输出的场景。

    my_dict = {'apple': 3, 'orange': 1, 'banana': 2}# 按键升序for key in sorted(my_dict.keys()): print(f"{key}: {my_dict[key]}")# 按值降序for key in sorted(my_dict, key=my_dict.get, reverse=True): print(f"{key}: {my_dict[key]}")
  • 使用ChainMap合并多个字典视图将多个字典视为单一逻辑字典遍历,避免物理合并的开销。

    from collections import ChainMapdict1 = {'a': 1, 'b': 2}dict2 = {'b': 20, 'c': 3}combined = ChainMap(dict1, dict2)for key, value in combined.items(): print(f"{key}: {value}") # 输出: 'a': 1, 'b': 2, 'c': 3('b'取自dict1)
四、性能与选择建议
  • 效率对比

    仅需键时,直接迭代字典或keys()最快。

    仅需值时,values()最直接。

    同时需要键值对时,items()效率最高(避免重复哈希查找)。

  • 代码可读性优先除非处理超大规模字典,否则应优先选择逻辑清晰的遍历方式,而非过度优化性能。例如,字典推导式在可读性和简洁性上通常优于传统循环。