如何查看列表中是否存在某个类

时间:2018-05-24 05:03:09

标签: python list types comparison comparison-operators

我有一个类user,它有一个属性metadata

metadata是一个对象列表,每个对象都有不同的类,例如:

user.metatada = [Employee(), Student(), OtherClass()]

在更新脚本中,我需要检查列表中是否存在某种类型,如下所示:

if type(Employee()) in user.metadata:
  replace user.metadata[indexOfThatEmployee] with new Employee()
else:
  user.metadata.append(new Employee())

无论如何都可以轻松检查列表中是否存在某种类型?

1 个答案:

答案 0 :(得分:0)

知道了。

test = [Employee()]

if any(isinstance(x, Employee) for x in user.metadata):
    user.metadata = [x for x in user.metadata if not isinstance(x, Employee)] + test
else:
    user.metadata = user.metadata + test

因此,这将检查列表中是否存在作为Employee类实例的对象,如果是,则过滤现有Employee对象的列表并添加新对象,如果它不存在,只需添加它。