Python 中查詢兩個字典的公共鍵


字典是 Python 中四種資料型別之一,不允許任何鍵重複。在本問題陳述中,我們必須建立兩個字典作為使用者輸入,並檢查是否存在公共鍵匹配。如果找到公共鍵元素,則列印結果。這可以透過使用 Python 中的各種方法來實現,例如 type()、items()、set() 等。

讓我們舉個例子

輸入

A = { ‘I’: 10, ‘II’: 20, ‘III’: 30, ‘IV’:40 }

B = { ‘II’: 40, ‘V’: 60, ‘VI’: 80, ‘I’: 90 }

輸出

{ ‘I’, ‘II’ }

解釋

上面兩個變數被定義為設定字典的輸入值,根據問題陳述,發現鍵名稱 - I 和 II 在兩個變數中都匹配。

語法

以下語法在示例中使用 -

keys()

keys() 是 Python 中的一個內建方法,它有助於從字典中返回鍵。

items()

這是 Python 中的內建方法,它返回包含鍵值對的檢視物件。

set()

set() 是 Python 中的內建方法,可用於在一個變數中儲存多個專案。

filter()

當我們需要根據特定條件過濾專案時,會應用 filter() 方法。簡單來說,它允許使用者迭代那些被提取出來以滿足條件的元素。

lambda

Python 中的這個 lambda 函式被稱為匿名函式。當需要函式物件時,可以使用它。

intersection()

交集是 Python 中的內建方法,它檢查兩個不同集合之間的相似性。

使用 keys() 函式

該程式使用 keys 來從字典中返回鍵,如果發現鍵元素相同。

示例

在以下示例中,首先定義名為 key_common 的函式,該函式接受兩個引數 - a(接收來自 dict_1 的值)和 b(接收來自 dict_2 的值)。然後使用巢狀 for 迴圈迭代每個單獨的字典,即 ab 透過使用內建函式 keys() 的變數 i 和 j。接下來,使用 if 語句,它將檢查變數 - i 和 j 的等效性,這將找到一個相似的匹配,並透過列印變數 i 返回唯一的鍵。現在建立兩個變數 - dict_1dict_2 來宣告字典。然後使用函式呼叫獲取結果。

def key_common(a,b):
      for i in a.keys():
        for j in b.keys(): 
          if i==j:
            print(i ,"is identified as the common key")
dict_1 ={'A':20,'T':30,'W':40,'S':100,'E':80}
dict_2 ={'E':200,'B':450,'S':100,'S':55,'A':20}
key_common(dict_1, dict_2)

輸出

A is identified as the common key
S is identified as the common key
E is identified as the common key

使用 items() 函式

該程式使用 items(),它透過包含鍵值對返回字典的檢視物件。為了檢查公共匹配,它將使用內建方法 keys() 從字典中返回唯一的鍵。

示例

在以下示例中,我們將首先建立兩個變數 - dict_1 和 dict_2,它們將宣告包含鍵和值的兩個字典。對於字典的檢視物件,它將在兩個變數中使用內建函式 items(),並使用運算子“&”將其儲存在變數 result 中。接下來,它將使用字典推導式,其中變數 i 迴圈遍歷 result 的每個專案,並將其儲存在變數 res 中。使用運算子“&”,它使用內建函式 keys() 檢查兩個鍵,並將它們儲存在變數 common_keys 中。最後,使用變數 common_keys 列印結果。

dict_1 = {"a": 1, "b":2, "c":3, "d":4}
dict_2 = {"t1": 1, "b":2, "e":5, "c":3}
# view object of common keys
result = dict_1.items() & dict_2.items() 
# In dictionary format
res = {i[0]:i[1] for i in result}  # i[0]:i[1] means each item in the list result.
common_keys = dict_1.keys() & dict_2.keys()  
print("Common Key:", common_keys)

輸出

Common Key: {'b', 'c'}

在 for 迴圈中使用 set() 函式

set() 函式用於將字典項轉換為元組集。然後使用運算子“&”執行集合交集以查詢鍵的公共匹配。

示例

在以下示例中,該程式比較兩個字典(dict_1dict_2),並列印同時存在於兩個字典中的鍵值對。然後 for 迴圈迭代生成的元組集,並且 print() 函式用於顯示同時存在於兩個字典中的鍵值對。

dict_1 = {"a": 1, "b": 2, "c": 3, "d": 4}
dict_2 = {"t1": 1, "b": 2, "e": 5, "c": 3}

for (key, value) in set(dict_1.items()) & set(dict_2.items()):
    print('%s: %s is present in both dict_1 and dict_2' % (key, value))

輸出

b: 2 is present in both dict_1 and dict_2
c: 3 is present in both dict_1 and dict_2

使用 intersection() 方法

該程式使用內建函式比較兩個字典以查詢公共鍵。

示例

在以下示例中,首先建立兩個儲存鍵以及值的字典。然後使用內建函式 set()intersection() 將從變數 a 和 b 中找到公共匹配。此過程儲存在變數 k_common 中。接下來,使用 for 迴圈,它將遍歷 k_common 以對字典中的公共鍵進行排序。內建函式 sorted() 由鍵的縮寫定義。繼續使用 print 函式設定引數 - keyend 以獲得所需的結果。

a = {"ab": 11, "bc": 21, "cd": 13, "de": 41}
b = {"cd": 33, "ad": 14, "de": 51, "fa": 16}
k_common = set(a).intersection(b)
print("Common Key from two dictionaries:")
for key in sorted(k_common):
	print(key, end=" ")

輸出

Common Key from two dictionaries:
cd de 

使用 filter() 和 lambda

該程式使用 filter() 刪除未發現為公共鍵的那些唯一鍵,並使用 lambda 從字典中計算公共鍵。

示例

在以下示例中,我們將首先透過建立兩個變數,即 a 和 b 來啟動程式。然後使用內建函式,例如變數 c_keys 中的 filter(),它將找到兩個字典中鍵的公共匹配。接下來,使用 for 迴圈,鍵將遍歷接受名為 c_keys 的引數的內建函式 sorted 以生成公共鍵。然後使用引數 key 和 end 列印結果。

a = {"abc": 11, "bax": 21, "cxs": 37, "qwd": 44}
b = {"ccc": 30, "qwd": 41, "bax": 75, "esf": 67}
c_keys = filter(lambda x: x in a, b)
print("Common Keys from two dictionary:\n")
for key in sorted(c_keys):
	print(key, end=" ")

輸出

Common Keys from the dictionary:

bax qwd 

結論

我們討論瞭解決此問題陳述的各種方法。然後學習了 Python 的不同內建函式,如 set()、intersection()、filter() 等,以從字典中獲取公共鍵。這種型別的程式有助於根據搜尋演算法構建邏輯。

更新於: 2023年8月14日

668 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告