将新值附加到字典键会给出属性错误:'int'对象没有属性'append'



我试图用enumerate()函数将列表映射到字典中,但当我试图将新值附加到键时,值对与附加它给出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)

如果有人知道如何处理,请告诉我。

append方法是为列表定义的,但是您从未在代码中创建列表。schedule[movie]的值被设置为day,这是一个整数。之后就不能对该值追加了!

我怀疑您希望schedule始终具有列表值。在这种情况下,您需要使用包含第一天的列表进行初始赋值,而不是直接使用日期值:

if movie not in schedule:
schedule[movie] = [day]      # add brackets to make a list
else:
schedule[movie].append(day)  # now this will work

正如@ blackknight已经解释过的,您正在尝试追加到一个没有追加方法的整数。对于您正在尝试执行的任务,标准库在collections模块中提供了默认字典。

from collections import defaultdict
schedule = defaultdict(list)
for day, movie in enumerate(movies):
schedule[movie].append(day)
print(schedule)

如果您想了解更多关于默认字典的信息,我建议您阅读https://realpython.com/python-defaultdict/.

相关内容

  • 没有找到相关文章

最新更新