gpt4 book ai didi

python - 查找具有重复值的字典键

转载 作者:太空狗 更新时间:2023-10-29 17:52:08 25 4
gpt4 key购买 nike

some_dict = {"firstname": "Albert", "nickname": "Albert", "surname": "Likins", "username": "Angel"}

我想返回我的字典的键,它们的值存在不止一次。

有人可以告诉我如何实现吗?

a_list = []
for k,v in some_dict.iteritems():
if v in some_dict.values() and v != some_dict.keys(k):
a_list.append(k)

最佳答案

首先,将字典翻转成反向多字典,将每个值映射到它映射到的所有键。像这样:

>>> 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)

现在,您只需在 multidict 中查找具有超过 1 个值的键。这很简单:

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

除了 multidict 键是原始字典值。因此,这是每个重复值,而不是匹配每个重复值的所有键。但是您知道与每个重复值匹配的所有键是什么吗?

>>> [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'}

关于python - 查找具有重复值的字典键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20672238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com