Python通过input删除列表元素时报x not in list错误如何解决
报错原因与解决方案
错误根源
报错由第二次remove操作触发:menu["harga"]对应的列表存储的是[1000,2000]这类数字型价格值,而你传入的删除参数hapus是输入的字符串(如butter),该值不存在于harga列表中,因此抛出ValueError: list.remove: x not in list错误。删除isi列表元素的操作实际已执行成功。
解决方案
如果你的需求是删除isi列表中对应名称的条目时,同步删除harga列表中同一位置对应的价格,可先查询目标元素在isi列表的下标,再按下标同步删除两个列表的对应元素:
menu = { "isi" : ["butter","jagung"], "harga" : [1000,2000] } hapus = input("insert name want to delete -> ") if hapus in menu["isi"]: # 获取目标元素的索引 del_index = menu["isi"].index(hapus) # 按索引同步删除两个列表的对应项 menu["isi"].pop(del_index) menu["harga"].pop(del_index) print("删除成功") else: print("待删除元素不存在")
可选优化方案
你当前用两个独立列表存储名称和价格的结构存在耦合度高的问题,更推荐直接用键值对字典存储对应关系,删除逻辑更简洁:
# 优化后的数据结构 menu = { "butter": 1000, "jagung": 2000 } hapus = input("insert name want to delete -> ") if hapus in menu: del menu[hapus] print("删除成功") else: print("待删除元素不存在")
内容的提问来源于stack exchange,提问作者StressCodingCok
相关产品推荐
相关产品推荐

