在 Python 中搜尋字典列表

Muhammad Maisam Abbas 2023年1月30日 2021年7月12日
  1. 在 Python 中使用 next() 函式搜尋字典列表
  2. 在 Python 中使用 filter() 函式搜尋字典列表
  3. 在 Python 中使用列表推導搜尋字典列表
在 Python 中搜尋字典列表

本教程將介紹可用於在 Python 中搜尋字典列表的方法。

在 Python 中使用 next() 函式搜尋字典列表

next() 函式可用於提供結果作為給定迭代器中的下一項。此方法還需要使用 for 迴圈來針對所有條件測試流程。

以下程式碼使用 next() 函式在 Python 中搜尋字典列表。

lstdict = [
        { "name": "Klaus", "age": 32 },
        { "name": "Elijah", "age": 33 },
        { "name": "Kol", "age": 28 },
        { "name": "Stefan", "age": 8 }
       ]
print(next(x for x in lstdict if x["name"] == "Klaus"))
print(next(x for x in lstdict if x["name"] == "David"))

輸出:

{'name': 'Klaus', 'age': 32}
Traceback (most recent call last):
  File "<string>", line 8, in <module>
StopIteration

當我們搜尋字典列表中已經存在的名稱時,該方法成功實現。儘管如此,當搜尋字典列表中不存在的名稱時,它會給出 StopIteration 錯誤。

但是,在上面的程式碼中可以很容易地處理這個問題。你只需使用稍微不同的 API 來調整並提供預設值。

lstdict = [
        { "name": "Klaus", "age": 32 },
        { "name": "Elijah", "age": 33 },
        { "name": "Kol", "age": 28 },
        { "name": "Stefan", "age": 8 }
       ]
print(next((x for x in lstdict if x["name"] == "David"), None))

輸出:

None

除了查詢專案本身,我們還可以在字典列表中查詢專案的索引。為了實現這一點,我們可以使用 enumerate() 函式。

以下程式碼使用 next() 函式和 enumerate() 函式來搜尋和查詢專案的索引。

lstdict = [
        { "name": "Klaus", "age": 32 },
        { "name": "Elijah", "age": 33 },
        { "name": "Kol", "age": 28 },
        { "name": "Stefan", "age": 8 }
       ]
print(next((i for i, x in enumerate(lstdict) if x["name"] == "Kol"), None))

輸出:

2

在 Python 中使用 filter() 函式搜尋字典列表

filter(function, sequence) function 用於將 sequence 與 Python 中的 function 進行比較。它根據函式檢查序列中的每個元素是否為真。通過使用 filter() 函式和 lambda 函式,我們可以輕鬆地在字典列表中搜尋一個專案。在 Python3 中,filter() 函式返回 filter 類的物件。我們可以使用 list() 函式將該物件轉換為列表。

下面的程式碼示例向我們展示瞭如何使用 filter()lambda 函式在字典列表中搜尋特定元素。

listOfDicts = [
     { "name": "Tommy", "age": 20 },
     { "name": "Markus", "age": 25 },
     { "name": "Pamela", "age": 27 },
     { "name": "Richard", "age": 22 }
]
list(filter(lambda item: item['name'] == 'Richard', listOfDicts))

輸出:

[{'age': 22, 'name': 'Richard'}]

我們使用 filter() 函式和 lambda 函式在字典列表中搜尋 name 鍵等於 Richard 的元素。首先,我們初始化了字典列表 listOfDicts,並使用 filter() 函式搜尋與 lambda 函式 lambda item: item['name'] == 'Richard' 匹配的值它。最後,我們使用 list() 函式將結果轉換為列表。

在 Python 中使用列表推導搜尋字典列表

列表推導式是一種相對較短且非常優雅的方式來建立基於現有列表的給定值形成的列表。

我們可以使用列表推導返回一個列表,該列表生成 Python 中字典列表的搜尋結果。

以下程式碼使用列表推導在 Python 中搜尋字典列表。

lstdict = [
        { "name": "Klaus", "age": 32 },
        { "name": "Elijah", "age": 33 },
        { "name": "Kol", "age": 28 },
        { "name": "Stefan", "age": 8 }
       ]

print([x for x in lstdict if x['name'] == 'Klaus'][0])

輸出:

{'name': 'Klaus', 'age': 32}
Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

相關文章 - Python Dictionary

相關文章 - Python List