在Python中按属性获取对象列表中的索引
在本文中,我们将了解如何使用Python中的属性在列表中查找项目的索引。我们将使用 enumerate函数来执行此操作。
enumerate()函数产生一个计数器,用于计算循环被迭代的次数。我们不需要导入额外的库来使用 enumerate()函数,因为它是Python内置的。如果我们使用 enumerate 函数() ,那么我们不必担心生成 range() 语句然后检索数组的长度。 enumerate函数维护两个值:项目的索引和它的值。
Syntax: enumerate(iterable, start=0)
Parameters:
- iterable: any object that supports iteration
- start: the index value from which the counter is
- to be started, by default it is 0
Python3
# This code gets the index in the
# list of objects by attribute.
class X:
def __init__(self,val):
self.val = val
def getIndex(li,target):
for index, x in enumerate(li):
if x.val == target:
return index
return -1
# Driver code
li = [1,2,3,4,5,6]
# Converting all the items in
# list to object of class X
a = list()
for i in li:
a.append(X(i))
print(getIndex(a,3))
输出:
2
在这段代码中,我们首先构造一个类 X,例如,具有属性 val。现在我们将为我们的任务编写一个函数(这里我们称之为 getIndex()),它将使用属性返回我们正在寻找的项目的索引,如果项目不存在于我们的列表中,则返回 -1 .我们将在 getIndex() 中使用 enumerate 方法,如您所见,我们在 for 循环中使用了两个变量(index 和 x),因为 enumerate函数跟踪项目的索引和值,我们需要存储这两个值以完成我们的任务。我们的 for 循环中有一个 if 条件,如果列表中项目 x 的 val 属性与目标值具有相同的值,则返回其索引值。 enumerate函数提供这些索引值。现在让我们看看它是如何工作的。例如,我们在变量 li 中定义了一个列表,我们将把这个整数值列表转换成一个对象列表。现在我们已经将此列表以及我要为其查找索引的目标值传递给 getIndex函数。