查找具有相同未知值的所有键

2024-09-30 02:26:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我在互联网上到处寻找,问这样一个问题:如何才能在字典中找到所有具有相同值的键。但这个值还不知道。最近出现的是this,但是值是已知的

假设我有一本这样的字典,这些值是完全随机的,不是我硬编码的

{'AGAA': 2, 'ATAA': 5,'AJAA':2}

如何识别具有相同值的所有键?最有效的方法是什么

['AGAA','AJAA']

Tags: 方法编码字典互联网thisataaagaaajaa
2条回答

您可以尝试以下方法:

from collections import Counter

d = {'AGAA': 2, 'ATAA': 5,'AJAA':2}

l = Counter(d.values())
l = [x for x,y in l.items() if y > 1]

out = [x for x,y in d.items() if y in l]
# Out[21]: ['AGAA', 'AJAA']

我要做的就是把字典翻过来。我的意思是对每个公共值的键进行分组。因此,如果您从以下内容开始:

{'AGAA': 2, 'ATAA': 5, 'AJAA': 2}

您可能希望将其分组,以便键现在是值,值现在是键:

{2: ['AGAA', 'AJAA'], 5: ['ATAA']}

对值进行分组后,可以使用max确定最大分组

例如:

from collections import defaultdict

data = {'AGAA': 2, 'ATAA': 5, 'AJAA': 2}

grouped = defaultdict(list)
for key in data:
    grouped[data[key]].append(key)

max_group = max(grouped.values(), key=len)
print(max_group)

产出:

['AGAA', 'AJAA']

您还可以找到max键并按以下方式打印:

max_key = max(grouped, key=lambda k: len(grouped[k]))
print(grouped[max_key])

相关问题 更多 >

    热门问题