使用字符串变量删除字典元素时触发列表索引类型错误
问题解决:删除字典元素时的列表索引错误
错误原因
- 代码里的
for patient_delete in waiting_room会完全覆盖用户输入的patient_delete变量,变成遍历字典的所有键,导致你试图删除所有患者,这和你想要的“删除指定患者”需求不符。 waiting_list是列表类型,列表只能用整数索引或切片来访问/删除元素,用字符串(患者名字)当索引直接触发TypeError。
修正方案
假设你的需求是:根据用户输入的名字,删除字典waiting_room中的对应条目,同时删除列表waiting_list中的对应患者(列表中存储患者名字)。
修正后的代码:
waiting_list = ['John', 'Bob'] waiting_room = { 'John': '123', 'Bob': '124' } patient_delete = input('which patient would you like to delete? ') # 先检查患者是否存在,避免报错 if patient_delete in waiting_room: # 删除字典中的患者条目 del waiting_room[patient_delete] # 删除列表中的患者(用remove方法根据元素值操作) if patient_delete in waiting_list: waiting_list.remove(patient_delete) print(f"已成功删除患者 {patient_delete}") else: print(f"未找到患者 {patient_delete}")
特殊情况处理
如果waiting_list中存储的不是直接的患者名字,而是包含名字的字典/对象(比如[{'name': 'John', 'id': '123'}, ...]),需要先找到对应的索引再删除:
# 遍历列表找到目标患者的索引 for idx, item in enumerate(waiting_list): if item['name'] == patient_delete: del waiting_list[idx] break
内容的提问来源于stack exchange,提问作者firfrelly
相关产品推荐
相关产品推荐

