如何通过查找对象的属性来删除对象?
我希望在将多个对象添加到列表时,可以通过属性代码进行搜索,例如,仅删除该对象
我该怎么办?
class Biblioteca():
def cargarMateriales(self,material,a):
material.append(a)
return material
def cargarPersonas(self):
print()
class Material(Biblioteca):
def __init__(self,tipoMaterial=None,codigo=None,autor=None,titulo=None,anio=None,status=None):
self.tipoMaterial = tipoMaterial
self.codigo = codigo
self.autor = autor
self.titulo = titulo
self.anio = anio
self.status = status
def __repr__(self):
return "Tipo de materia: {0}, Codigo: {1}, Autor del libro: {2}, Titulo del libro: {3}, Año del libro: {4}, status del libro: {5}".format(self.tipoMaterial,self.codigo,self.autor,self.titulo,self.anio,self.status)
def altaMaterial(self):
self.tipoMaterial = input(str("Cual es el tipo de material?"))
self.codigo = input(str("Que codigo tiene el libro codigo?"))
self.autor = input(str("Que autor tiene el libro?"))
self.titulo = input(str("Que titulo tiene el libro?"))
self.anio = int(input("De que año es?"))
self.status = input(str("Que status tiene?"))
material = []
b = Biblioteca()
a = Material()
a.altaMaterial()
b.cargarMateriales(material, a)
答案 0 :(得分:0)
要查找与列表中的条件匹配的元素,可以使用以下单行表达式:
elements = [element for element in my_list if element.code == code]
code
是包含您要搜索的代码的变量。这将返回所有匹配的元素,如果没有匹配项,则可能为空列表;如果只有一个匹配条件的元素或多个元素,则返回一个元素的列表。如果只需要第一个符合条件的元素,则可以使用next
函数,如下所示:
element = next(element for element in my_list if element.code == code)
一旦有了元素,就可以像这样从列表中将其删除:
my_list.remove(element)
答案 1 :(得分:0)
过滤器功能允许您从列表中选择某些元素:
for i in range(15):
materiales.append(Material(tipoMaterial=i%4, codigo=i))
print(materiales)
materiales = list(filter(lambda material: material.tipoMaterial < 2, materiales))
print(materiales)
因此,您可以匹配指定某些条件的条件。