首頁 >後端開發 >Python教學 >如何在Python中基於鍵值匹配高效地從列表中查找和檢索字典?

如何在Python中基於鍵值匹配高效地從列表中查找和檢索字典?

Barbara Streisand
Barbara Streisand原創
2024-12-10 06:43:37998瀏覽

How to Efficiently Find and Retrieve a Dictionary from a List in Python Based on Key-Value Matching?

根據特定條件從清單中搜尋和檢索字典

在 Python 中,操作字典清單是一項常見任務。其中一個場景涉及根據鍵值對搜尋和檢索特定字典。

問題:

考慮以下字典列表:

[
  { "name": "Tom", "age": 10 },
  { "name": "Mark", "age": 5 },
  { "name": "Pam", "age": 7 }
]

我們如何搜尋並擷取「name」鍵設定為的字典「Pam」 ?

解:

為了解決這個問題,我們可以利用產生器表達式,如下所示:

dicts = [
    { "name": "Tom", "age": 10 },
    { "name": "Mark", "age": 5 },
    { "name": "Pam", "age": 7 },
    { "name": "Dick", "age": 12 }
]

result = next(item for item in dicts if item["name"] == "Pam")

生成器表達式式迭代列表中的每個字典並檢查其“name”鍵是否與“Pam”相符。如果找到匹配項,則傳回對應的字典並將其儲存在結果變數中。 next() 函數確保傳回第一個符合的項目。

例如,執行上面的程式碼片段會擷取字典:

{'age': 7, 'name': 'Pam'}

處理未找到項目:

如果找不到該項目,您可以使用略有不同的預設值來處理它API:

result = next((item for item in dicts if item["name"] == "Pam"), None)

None參數確保函數在未找到匹配項目時傳回 None。

尋找項目的索引:

要尋找匹配項的索引而不是項本身,您可以使用enumerate()函數:

index = next((i for i, item in enumerate(dicts) if item["name"] == "Pam"), None)

enumerate() 函數傳回元組的迭代器,其中每個元組包含索引和項目。生成器表達式使用此迭代器尋找第一個匹配項的索引並將其儲存在索引變數中。

以上是如何在Python中基於鍵值匹配高效地從列表中查找和檢索字典?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn