按值对字典列表进行分组

Vas*_*ari 5 python

我有一个字典列表。我如何按值对该列表进行分组。

list = [{a:1},{b:2},{c:1},{d:3},{e:2}]
Run Code Online (Sandbox Code Playgroud)

现在我的结果应该如下所示

1:a,c
2:b,e
3:d
Run Code Online (Sandbox Code Playgroud)

我尝试使用groupbyfrom itertools。但我无法得到所需的结果。我正在使用 python 2.7。

你能帮我实现这个目标吗?

tob*_*s_k 5

如果要使用groupby,则列表必须与sorted要分组的键相同。

>>> lst = [{'a':1}, {'b':2}, {'c':1}, {'d':3}, {'e':2}]

>>> keyfunc = lambda d: next(iter(d.values()))

>>> sorted(lst, key=keyfunc)
[{'a': 1}, {'c': 1}, {'b': 2}, {'e': 2}, {'d': 3}]

>>> {k: [x for d in g for x in d] 
...  for k, g in itertools.groupby(sorted(lst, key=keyfunc), key=keyfunc)}
{1: ['a', 'c'], 2: ['b', 'e'], 3: ['d']}
Run Code Online (Sandbox Code Playgroud)