📌  相关文章
📜  Python|按值对字典键进行分组

📅  最后修改于: 2022-05-13 01:55:25.322000             🧑  作者: Mango

Python|按值对字典键进行分组

在对字典进行计算时,我们可能会遇到一个问题,我们可能必须执行根据值对键进行分组的任务,即创建一个键列表,它是值。在机器学习的情况下组织数据的情况下,这可能是其他情况。让我们讨论一下可以执行此任务的特定方式。
方法:使用 sorted() + items() + defaultdict()
可以通过组合上述功能可以完成的任务来执行此任务。 defaultdict() 用于创建用列表初始化的字典, items() 获取键值对,而 sorted() 帮助分组。

Python3
# Python3 code to demonstrate working of
# Grouping dictionary keys by value
# Using sorted() + items() + defaultdict()
from collections import defaultdict
 
# Initialize dictionary
test_dict = {'gfg' : 1, 'is' : 2, 'best' : 1, 'for' : 3, 'CS' : 2}
 
# printing original dictionary
print("The original dictionary : " +  str(test_dict))
 
# Using sorted() + items() + defaultdict()
# Grouping dictionary keys by value
res = defaultdict(list)
for key, val in sorted(test_dict.items()):
    res[val].append(key)
     
# printing result
print("Grouped dictionary is : " + str(dict(res)))


Python3
d_input = {'Input.txt': 'Randy', 'Code.py': 'Stan', 'Output.txt': 'Randy'}
res = {}
for i, v in d_input.items():
    res[v] = [i] if v not in res.keys() else res[v] + [i]
print(res)


输出:

The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2}
Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}

方法二:

此外,此任务也可以在不使用任何模块的情况下执行。
所以这里的逻辑是:
我们可以检查密钥是否存在
1.不,那我们可以创建key res[v] = [i]
2. 是的,我们可以在键 res[v] + [i] 上附加值

Python3

d_input = {'Input.txt': 'Randy', 'Code.py': 'Stan', 'Output.txt': 'Randy'}
res = {}
for i, v in d_input.items():
    res[v] = [i] if v not in res.keys() else res[v] + [i]
print(res)

输出:

{'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}