如何在字典键中检查相同的值,然后返回具有相同值的键?

时间:2014-09-26 15:54:08

标签: python

我需要检查字典中是否有值相同的键,然后返回具有相同值的键。

我的代码如下:

count = {}
x = "Helllo Worldddd5!"

for s in x.lower():
    if s == ' ' or s.isdigit() or s in '!@#$%^&*()></?:"':
        continue
    elif s in count.keys():
        count[s] += 1
    else:
        count[s] = 1

导致:

count = {'e': 1, 'd': 4, 'o': 2, 'h': 1, 'w': 1, 'l': 4, 'r': 1}

你可以看到&#39; d&#39;和&#39; l&#39;有相同的价值观。我想迭代键/值对并返回具有相同值的键。我想回归&#39; h&#39;和&#39; l&#39;在这种情况下。

2 个答案:

答案 0 :(得分:3)

您可以制作set个唯一count值。然后检查哪些键在dict理解中具有这些值。

count = {'e': 1, 'd': 4, 'o': 2, 'h': 1, 'w': 1, 'l': 4, 'r': 1}
s = set(count.values())
d = {j : [i for i in count if count[i] == j] for j in s}

>>> d
{1: ['e', 'h', 'r', 'w'],
 2: ['o'],
 4: ['d', 'l']}

答案 1 :(得分:0)

您可以使用collections.Counteritertools.groupby

from collections import Counter
from itertools import groupby

counts = Counter([ele.lower() for ele in x if ele.isalpha()]).most_common()
print [list(val[0] for val in list(v))for k, v in groupby(counts, key=lambda t: t[1])]

[['d', 'l'], ['o'], ['e', 'h', 'r', 'w']]