Python字典值迭代报错TypeError,求错误原因与正确实现方法
错误原因与正确迭代方案
错误原因
range()函数要求传入整数类型的参数(或起始/结束/步长的整数组合),你直接传入了列表dictList,Python无法将列表解析为整数来生成循环范围,因此触发TypeError: 'list' object cannot be interpreted as an integer错误。- 额外提醒:不要用
dict作为变量名,它是Python内置的字典类型标识符,会覆盖内置对象,可能引发后续未知问题。
正确的字典迭代方式
你完全不需要把字典的values()转换成列表再遍历,Python支持直接迭代字典的视图对象,以下是两种可行方案:
方案1:直接遍历values()(推荐)
# 改用自定义变量名,避免覆盖内置类型 menu = { 'eggs': 5, 'chips': 4, 'ham': 3 } # 直接遍历字典的values视图 for count in menu.values(): print(count)
方案2:通过索引遍历(不推荐,冗余操作)
如果坚持要用索引方式遍历,需要给range()传入列表的长度(整数):
menu = { 'eggs': 5, 'chips': 4, 'ham': 3 } menu_list = list(menu.values()) # 传入列表长度给range() for i in range(len(menu_list)): print(menu_list[i])
总结
你当前的迭代逻辑不正确,核心问题是range()参数使用错误;同时没必要额外转换列表,直接迭代menu.values()是最简洁高效的方式。
内容的提问来源于stack exchange,提问作者plasticmicky
相关产品推荐
相关产品推荐

