首先,将字典翻转成反向多字节,将每个值映射到它映射到的所有键.喜欢这个:

>>> some_dict = {"firstname":"Albert","nickname":"Albert","surname":"Likins","username":"Angel"}
>>> rev_multidict = {}
>>> for key, value in some_dict.items():
... rev_multidict.setdefault(value, set()).add(key)

现在,您只是在寻找具有多于1个值的multidict中的键.这很容易:

>>> [key for key, values in rev_multidict.items() if len(values) > 1]
['Albert']

除了multidict键之外,还有原始的dict值.因此,这是每个重复的值,而不是与每个重复值匹配的所有键.但是你知道匹配每个重复值的所有键是什么?

>>> [values for key, values in rev_multidict.items() if len(values) > 1]
[{'firstname', 'nickname'}]

当然,这会给你一个集合列表.如果您想将其展平为单个列表或集合,那很容易.您可以使用chain.from_iterable,嵌套理解或任何其他常用技巧.例如:

>>> set(chain.from_iterable(values for key, values in rev_multidict.items() if len(values) > 1))
{'firstname', 'nickname'}