在 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+ 浏览

开启您的 职业生涯

通过完成课程获得认证

入门
广告
© . All rights reserved.