Python中使用dict.items()和list(dict.items())遍历字典有什么区别?
两种写法的核心差异
- 直接遍历
states.items():遍历的是字典的动态视图对象,和原字典实时关联。如果遍历过程中修改原字典的结构(增/删键),Python会直接抛出RuntimeError: dictionary changed size during iteration错误终止运行。 - 遍历
list(states.items()):会先把当前字典所有键值对一次性导出生成一个独立的静态列表,后续遍历的是这个列表,和原字典不再关联。遍历过程中修改原字典的结构不会影响当前遍历的进度和内容,也不会报错。
如果你的遍历逻辑完全不会修改原字典的结构,两种写法的运行结果没有区别,但直接遍历states.items()不需要额外生成列表,内存占用更低,字典数据量越大优势越明显。
举个对比示例:
states = {'Oregon': 'OR', 'Florida': 'FL'} # 直接遍历items()视图,中途修改字典会报错 for key, val in states.items(): print(key, val) states['Texas'] = 'TX' # 这行触发运行时错误 # 先转列表再遍历,中途修改字典无影响 states = {'Oregon': 'OR', 'Florida': 'FL'} for key, val in list(states.items()): print(key, val) states['Texas'] = 'TX' # 不会报错,本次遍历也不会打印Texas
内容的提问来源于stack exchange,提问作者four-eyes
相关产品推荐
相关产品推荐

