如何在 Python 中檢查一個值是否在字典中

Rayven Esplanada 2023年1月30日
  1. 使用 get() 和鍵檢查值是否存在於字典中
  2. 使用 values() 檢查指定的值是否存在於字典中
  3. 如果值是一個列表,檢查值是否存在於一個字典中
如何在 Python 中檢查一個值是否在字典中

本教程演示瞭如何檢查一個值是否存在於 Python 字典中。在這裡,我們將涉及相關的主題,例如搜尋一個鍵給出的值,搜尋一個特定的值,以及搜尋一個物件或集合的值。

首先,如果值存在於字典中,我們需要列印 True;否則列印 False

使用 get() 和鍵檢查值是否存在於字典中

Python 中的字典有一個內建函式 key(),它返回給定鍵的值。同時,如果它不存在,它將返回 None。你可以使用這個函式作為條件來確定一個值是否存在於一個字典中。

讓我們先宣告一個簡單的字典,裡面有 int 鍵和字串值。

simpDict = {1: "Ant", 2: "Bear", 3: "Cat", 4: "Dog", 5: "Elephant"}

如果你想用它的鍵對來尋找值,那麼 key() 函式就是最好的方法。例如,你想搜尋任何以 6 為鍵的值;按照下面的程式碼。

if simpDict.key(6) != None:
    print("True")
else:
    print("False")

由於 simpDict 函式沒有鍵 6,所以這段程式碼將輸出 False

使用 values() 檢查指定的值是否存在於字典中

與尋找一個特定值的情況不同,在一個字典中尋找一個鍵是非常直接的;你只需要使用關鍵字 in 和你要在字典中尋找的鍵。

print(3 in simpDict)

這樣會輸出 True,因為鍵 3 存在。如果我們用一個不存在的鍵替換這個數字,那麼它將輸出 False

另一方面,如果你想在字典中尋找一個特定的值,你可以使用函式 values()values() 命令將返回一個字典中所有值的列表。使用 values(),你可以利用 in 關鍵字對字典和指定的值進行查詢。假設你想知道值 Elephant 是否在字典中,執行下面的程式碼。

print("Elephant" in simpDict.values())

這行將輸出 True,因為在 simpDict 鍵 5 中存在 Elephant 這個詞。

在 Python 2.X 中,還有兩個類似於 values() 的函式,它們是 itervalues()viewvalues();這些函式在 Python 3.X 版本中已經被棄用。

itervalues()viewvalues() 命令將與 values() 命令完成同樣的任務;然而,不同的實現雖然非常微不足道,但卻大大影響了執行時間。

print("Elephant" in simpDict.itervalues())
print("Elephant" in simpDict.viewvalues())

兩者都會返回與 values() 函式相同的輸出。需要注意的是,冗餘可能是這些函式從新的 Python 版本中被棄用的主要原因。

現在,如果字典中的值是像列表或物件這樣的資料結構呢?讓我們來看看。

如果值是一個列表,檢查值是否存在於一個字典中

listDict = {1: ["a", "b"], 2: ["b", "c"], 3: ["c", "d"], 4: ["d", "e"]}

現在,我們有一個帶有 int 鍵的字典和一個作為值的字元列表。

假設我們想搜尋列表 ['c', 'd'] 是否存在於字典中。

print(["c", "d"] in listDict.values())

結果輸出將是 True;這證實了通過迭代字典來比較集合也是可行的。

但是,如果你想檢查列表值中的一個值是否存在於字典中呢?要解決這個問題,只需在值上迴圈,並在列表上使用 in 關鍵字,而不是在字典上。

例如,你想檢查字元'e'是否存在於這個列表中的值中。下面是要執行的程式碼。

tof = False
for value in listDict.values():
    if "e" in value:
        tof = True
        break
print(tof)

輸出將列印出 True,因為'e'存在於字典中。

總之,使用函式 values() 來遍歷這些值,並比較你要找的值是否存在於值列表中。當你想檢查一個指定的值是否存在於一個字典中時,這就會有幫助。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

相關文章 - Python Dictionary