如何在 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()
來遍歷這些值,並比較你要找的值是否存在於值列表中。當你想檢查一個指定的值是否存在於一個字典中時,這就會有幫助。
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