在python字典中组合具有相同值的键的有效方法

在python字典中组合具有相同值的键的有效方法,python,Python,例如,我有下面的字典 {'key1':value1,'key2':value2,'key3':value1,.......}} 我想将其更改为以下形式: {value1:[key1,key2],value2:[key3],....} 为了完成这项任务,我写了以下内容。然而,我不确定这是否是最好的方法。有没有更好的方法来执行此任务 node_cluster = {} for node,cluster in zip(partition.keys(),partition.values()):

例如,我有下面的字典

{'key1':value1,'key2':value2,'key3':value1,.......}} 
我想将其更改为以下形式:

{value1:[key1,key2],value2:[key3],....}
为了完成这项任务,我写了以下内容。然而,我不确定这是否是最好的方法。有没有更好的方法来执行此任务

node_cluster = {}

for node,cluster in zip(partition.keys(),partition.values()):
    if cluster not in node_cluster.keys():
        node_cluster[cluster] = []
    node_cluster[cluster].append(node)
您可以使用a将代码缩短一点。当您尝试访问尚不存在的密钥时,
defaultdict(list)
将自动创建一个空列表作为值:

from collections import defaultdict

d = {'a': 1, 'b': 2, 'c': 1}

out = defaultdict(list)
for k, v in d.items():
    out[v].append(k)
    
print(out)
# defaultdict(<class 'list'>, {1: ['a', 'c'], 2: ['b']})
从集合导入defaultdict
d={'a':1,'b':2,'c':1}
out=defaultdict(列表)
对于d.项()中的k,v:
out[v]。追加(k)
打印(输出)
#defaultdict(,{1:['a',c'],2:['b']})

尝试
对于节点,分区中的集群。items():
这似乎是一个合理的解决方案。你可以考虑用A来清理一些样板,我想这是你能做到的。这个问题在这里有一个答案:这是正确的答案,但是对于d中的k,v,缺少
。items():
@superbrain Oops。。。是的,看起来我在复制之前滑倒并删除了一行。。。现在又回来了,谢谢!