在 Python 中根據屬性獲取物件列表中的索引


列表是 Python 中用於儲存物件集合的常用資料結構。有時,您可能需要使用特定屬性的值來查詢列表中某個特定專案的索引。這可能是一個複雜的過程,尤其是在列表包含大量專案時,但 Python 提供了一種簡單的方法來根據屬性獲取物件列表中的索引,我們將在本文中探討。

語法

要根據屬性查詢物件列表中的索引,請使用以下所示的語法:

index = next((i for i, obj in enumerate(my_list) if obj.attribute == desired_value), None)

此程式碼使用 next() 方法從生成器表示式中檢索下一個專案,該方法提供列表中與所需屬性值對應的物件的初始索引。如果不存在與指定屬性值匹配的物件,則返回 None 值。

演算法

  • 您可以使用生成器表示式遍歷列表中的每個專案。

  • 驗證當前物件的屬性值是否與預期值匹配。

  • 如果屬性值符合所需值,則返回當前物件的索引。

  • 如果不存在與指定屬性值匹配的物件,則返回 None。

示例

假設問題是從員工物件列表中查詢具有特定姓名屬性的員工物件的索引。

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

employees = [
   Employee("John", 30, 50000),
   Employee("Alice", 25, 45000),
   Employee("Bob", 35, 55000)
]

index = next((i for i, obj in enumerate(employees) if obj.name == "Alice"), None)

print(index)

輸出

1

在此示例中,我們定義了一個 Employee 類,其中包含 name、age 和 salary 屬性。然後,我們建立一個名為 employees 的 Employee 物件列表。我們希望找到名為“Alice”的 Employee 物件的索引。我們使用 next() 函式和生成器表示式來遍歷 employees 列表中的每個物件,並檢查 name 屬性是否與所需值匹配。如果找到匹配的物件,則返回索引。如果沒有任何物件與所需的屬性值匹配,則返回 None。在本例中,輸出為 1,因為名為“Alice”的 Employee 物件位於 employees 列表中的索引 1 處。

應用

許多情況下需要能夠根據屬性獲取物件列表中的索引。例如,如果您有一個表示專案的專案物件列表,並且您希望找到具有特定 ID 屬性的專案的索引。如果您有一個表示客戶的客戶物件列表,您可能還想找到具有特定電子郵件屬性的客戶的索引。此功能的應用範圍廣泛,從 Web 開發到資料分析。

結論

總而言之,根據屬性獲取物件列表中的索引是 Python 程式設計中的一項常見任務。我們可以透過結合使用 next() 方法和生成器表示式,快速確定列表中某個專案的索引,該專案基於某個特定屬性值。此功能的應用範圍廣泛,從 Web 開發到資料分析。

更新於: 2023-07-18

1K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.