问题描述
我是 Python 新手。我是一名Java程序员。我有一个类的对象列表。我的目的是从列表中查找并删除一个对象。
班级
class commit:
def __init__(self,id,message):
self.id = id
self.message = message
elif command.startswith("git delete"):
split = command.split();
deleteID = split[2]; // the id which will be deleted.
print('deleteID:' + deleteID)
d1 = {};
for obj in listCommit:
print(obj.id)
if obj.id == deleteID:
print(obj)
listCommit.remove(obj);
d1 = obj;
# listCommit.remove(d1);
我发现此 if obj.id == deleteID:
不起作用。
listCommit.remove(d1);
这一行显示对象未退出的错误。
所以我的问题是:如何从列表中查找和删除对象?
并且这个 if obj.id == deleteID:
检查给出错误,而它应该给出正确。
解决方法
原因是因为commit.id
变量是int
类型,而deleteID
变量是str
类型,
和 "5" == 5
之类的东西在 Python 中永远不会是 True
。
只需替换行
deleteID = split[2]
与
deleteID = int(split[2])
转换数据类型以与 commit.id
变量兼容。
当值不在列表中时,您可以捕获抛出的异常:
try:
listCommit.remove(d1)
except ValueError:
pass
Here 是删除 API: