📅  最后修改于: 2023-12-03 15:19:35.078000             🧑  作者: Mango
在Python中,我们经常需要对字典中的键进行分组。当字典中的值具有相似的特征时,我们可以使用Python的一些特定技巧来实现这一目标。
给定一个字典,我们希望将具有相似值的键分组在一起。例如,给定以下字典:
d = {"apple": 2, "banana": 3, "cherry": 2, "durian": 3}
我们希望得到以下结果:
{2: ['apple', 'cherry'], 3: ['banana', 'durian']}
以下是解决此问题的几种常见方法。
def group_keys(d):
result = {}
for key, value in d.items():
if value in result:
result[value].append(key)
else:
result[value] = [key]
return result
collections.defaultdict
from collections import defaultdict
def group_keys(d):
result = defaultdict(list)
for key, value in d.items():
result[value].append(key)
return dict(result)
itertools.groupby
函数from itertools import groupby
def group_keys(d):
sorted_dict = sorted(d.items(), key=lambda x: x[1])
result = {k: [item[0] for item in g] for k, g in groupby(sorted_dict, key=lambda x: x[1])}
return result
下面是使用以上函数的示例:
d = {"apple": 2, "banana": 3, "cherry": 2, "durian": 3}
grouped_dict = group_keys(d)
print(grouped_dict)
输出:
{2: ['apple', 'cherry'], 3: ['banana', 'durian']}
以上就是将字典中具有相似值的键分组的Python程序介绍。您可以根据自己的需要选择适合的方法来实现这一功能。