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

使用字符串变量删除字典元素时触发列表索引类型错误

问题解决:删除字典元素时的列表索引错误

错误原因

  1. 代码里的for patient_delete in waiting_room会完全覆盖用户输入的patient_delete变量,变成遍历字典的所有键,导致你试图删除所有患者,这和你想要的“删除指定患者”需求不符。
  2. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:35:21