python - 从具有对象属性之一的对象列表中获取索引

标签 python oop arraylist

我有一个对象列表,我试图从我拥有的对象的属性(例如名称)中获取该列表中一个对象的索引。类似于下面的例子:

class Employee:
    def __init__(self, name):
        self.name = name

def add_emp(name):
    employees.append(Employee(name))

employees = []
add_emp('Emp1')

现在我正在尝试获取 self.employees 列表中“Emp1”的索引(此处为“0”)。我在这里尝试过:
print(employees.index(filter(lambda x: x.name == 'Emp1', employees)))

但他告诉我“ValueError: < filter object at 0xblabla > 不在列表中”。我必须改变什么或者有更好的选择来处理这个问题?

最佳答案

好吧,不要搜索过滤器本身,而是搜索过滤器找到的内容。例如,next(filter(...))而不是 filter(...) .

但真的更好用 enumerate :

print(next(i for i, x in enumerate(employees) if x.name == 'Emp1'))

或者您可以创建一个名称列表并询问索引:
print([x.name for x in employees].index('Emp1'))

不过,它的效率较低。

关于python - 从具有对象属性之一的对象列表中获取索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47057325/

相关文章:

python /MyPy : How to annotate a method that can return one of several different types of objects?

java 类和数组列表

java - 如何将 ArrayList<Vector3f> 转换为 ByteBuffer?

python - 获取mp3文件信息

python - 通过引用而不是通过名称字符串修补对象?

python - 将 QGroupBox 复选框视觉效果更改为扩展器

c++ - 在派生类中重载基类方法

python - 递归查找最小值(无内置或循环)

oop - 抽象类、接口(interface)、mixins

java - 如何将多个文本字段添加到数组列表 JavaFX