You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python字典追加值报错AttributeError: 'int'对象无append属性

报错原因

enumerate()遍历列表时,首次遇到某个电影名时,你给字典对应键赋的值是整数类型的天数day,不是列表。当后续再次遇到同一个电影名进入else分支时,schedule[movie]取到的是之前存的整数,整数类型本身没有append()方法,因此触发AttributeError。

修复方案

核心调整是:首次给电影名存值时,就把值初始化为列表类型,将第一个上映天数作为列表的首个元素存入,后续遇到同个电影直接往列表追加天数即可。
修正后的可运行代码:

movies = ['star wars', 'avenger', 'iron man', 'spider man', 'star wars', 'spider man', 'iron man', 'star wars', 'star wars']
schedule = {}

for day, movie in enumerate(movies):
  if movie not in schedule:
    # 首次存储时初始化为列表,放入当前天数
    schedule[movie] = [day]
  else:
    schedule[movie].append(day)
print(schedule)

运行后输出结果为:

{'star wars': [0, 4, 7, 8], 'avenger': [1], 'iron man': [2, 6], 'spider man': [3, 5]}

简化写法(可选)

如果不想手动判断键是否存在,可以使用collections模块的defaultdict,它会在访问不存在的键时自动生成指定类型的默认值,代码更简洁:

from collections import defaultdict

movies = ['star wars', 'avenger', 'iron man', 'spider man', 'star wars', 'spider man', 'iron man', 'star wars', 'star wars']
# 指定默认值类型为列表
schedule = defaultdict(list)

for day, movie in enumerate(movies):
    schedule[movie].append(day)

# 转成普通字典输出即可
print(dict(schedule))

内容的提问来源于stack exchange,提问作者Krushna Navle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 22:21:27