在 Python 中查詢字典中帶重複值的鍵


在處理字典時,我們可能會遇到這種情況:字典中存在重複的值,但顯然鍵是唯一的。在本文中,我們將介紹如何實現這一目標。

交換鍵和值

我們將鍵與字典的值進行交換,然後繼續追加與給定鍵關聯的值。這樣重複的值就會聚合在一起,我們可以在結果新字典中看到它們。

示例

 即時演示

dictA = {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 3}

print("Given Dictionary :", dictA)

k_v_exchanged = {}

for key, value in dictA.items():
   if value not in k_v_exchanged:
      k_v_exchanged[value] = [key]
   else:
      k_v_exchanged[value].append(key)

# Result
print("New Dictionary:", k_v_exchanged)

輸出

執行以上程式碼,得到以下結果 −

Given Dictionary : {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 3}
New Dictionary: {5: ['Sun', 'Tue'], 3: ['Mon', 'Wed']}

帶集合

這裡我們遵循類似的方法。這裡我們還使用 set 函式從現有字典建立一個新字典,並新增帶重複值的鍵。最後,我們過濾掉長度大於 1 的值,並將它們標記為重複值。

示例

 即時演示

dictA = {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 4}

print("Given Dictionary :", dictA)

dictB = {}
for key, value in dictA.items():
   dictB.setdefault(value, set()).add(key)

res = filter(lambda x: len(x) >1, dictB.values())

# Result
print("New Dictionary:",list(res))

輸出

執行以上程式碼,得到以下結果 −

Given Dictionary : {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 4}
New Dictionary: [{'Tue', 'Sun'}]

更新於: 26-8 月-2020

5K+ 瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

入門
廣告