我需要检查字典中是否有值相同的键,然后返回具有相同值的键。
我的代码如下:
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;在这种情况下。
答案 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.Counter和itertools.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']]