如何向字典中的列表追加字符串?附报错排查及功能实现求助
解决字典中列表追加报错的问题
嘿,这个报错我太熟悉了!'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




