Python遍历字典时跳过首个键值对及相关报错的解决方法
解决方案
错误原因说明
{1..len(my_dict)}是Shell环境下的序列生成语法,Python不支持该写法,无法生成你预期的连续整数序列- 你遇到的
AttributeError: 'float' object has no attribute 'len'报错,大概率是两种原因导致:要么是你错误地用了my_dict.len()的写法来获取字典长度(Python获取长度的标准语法是len(容器对象),字典本身没有len方法),要么是你之前的代码里把内置函数len赋值成了一个float类型的变量,覆盖了原有的功能 - Python字典是键值对存储结构,默认不支持用数字下标直接取值,只有当你显式将整数设为键时才能这么用,和列表的下标访问逻辑完全不同
可行实现方案
方案1:直接跳过指定占位键(最稳妥,无版本依赖)
你明确知道占位键的名称为dummy,遍历的时候直接过滤该键即可,不需要依赖字典的插入顺序,兼容性最好:
for key, df in my_dict.items(): if key == 'dummy': continue # 此处处理你的业务逻辑即可
方案2:按插入顺序跳过第一个键(仅适用于Python 3.7及以上版本)
Python 3.7开始官方规范字典默认按插入顺序保存键,你可以把键转成列表后从第二个元素开始切片遍历:
# 遍历键后取对应DataFrame for key in list(my_dict.keys())[1:]: df = my_dict[key] # 业务逻辑处理
也可以直接对键值对切片,同时获取键和值:
for key, df in list(my_dict.items())[1:]: # 业务逻辑处理
注意事项
不要使用len、list、dict这类Python内置名称作为自定义变量名,否则会覆盖原有内置功能,导致后续调用出现奇怪的报错。
内容的提问来源于stack exchange,提问作者mahmood
相关产品推荐
相关产品推荐

