You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何向字典中的列表追加字符串?附报错排查及功能实现求助

解决字典中列表追加报错的问题

嘿,这个报错我太熟悉了!'str' object has no attribute 'append' 本质就是你调用append()的对象不是列表——大概率是你在新增奥斯卡类别时,不小心把对应的值初始成了字符串,而不是空列表。

错误根源

举个反例,如果你这么写新增类别的代码:

oscars['Best director'] = 'Christopher Nolan'

'Best director'对应的就是字符串,之后再调用oscars['Best director'].append('xxx')肯定会报错,因为字符串根本没有append()方法。

正确实现方案

我们需要先把新增的类别初始化为空列表,再通过循环让用户输入任意数量的提名者,直到用户主动结束输入。完整代码如下:

oscars= { 
    'Best movie': ['The shape of water','Lady Bird','Dunkirk'], 
    'Best actress':['Meryl Streep','Frances McDormand'], 
    'Best actor': ['Gary Oldman','Denzel Washington'] 
}

# 获取用户要新增的奖项类别
new_category = input("请输入要新增的奥斯卡奖项类别:")

# 关键一步:将新类别对应的值初始化为空列表
oscars[new_category] = []

print(f"\n请输入{new_category}的提名者(直接回车结束输入):")
while True:
    nominee = input("提名者:")
    # 判断用户是否输入内容,为空则退出循环
    if not nominee.strip():
        break
    # 向列表中追加提名者
    oscars[new_category].append(nominee)

# 打印验证结果
print("\n更新后的奥斯卡提名字典:")
for category, nominees in oscars.items():
    print(f"- {category}: {', '.join(nominees)}")

额外说明

  • 这里用strip()处理用户输入是为了排除只输入空格的情况,让退出逻辑更严谨;
  • 你可以根据喜好修改退出条件,比如改成输入'quit'或者'结束'时停止输入;
  • 最后用', '.join(nominees)是为了让输出的提名者列表更美观,当然直接打印列表也没问题。

内容的提问来源于stack exchange,提问作者Diego Mencos

火山引擎 最新活动