4 python dictionary group-by aggregate key
我有一个清单:
lst = [('a', 1), ('b', 2), ('c', 3), ('a', 4), ('c', 5)]
Run Code Online (Sandbox Code Playgroud)
我想按元组的第一个元素进行分组并附加第二个元素:
group = {'a': [1, 4], 'b': [2], 'c': [3, 5]}
Run Code Online (Sandbox Code Playgroud)
所以我的代码如下所示:
group = dict()
for e1, e2 in lst:
if e1 in group:
group[e1].append(e2)
else:
group[e1] = [e2]
Run Code Online (Sandbox Code Playgroud)
我不喜欢这段代码的是,我在组字典中查找一个键两次,一次用于命令e1 in group,两次用于命令group[e1] = ...
如果找到键,是否有更好的方法来保留“指针”并且不必再次查看来设置该键的值?
另外,如果有更好的使用库的解决方案,请告诉我。
您可以使用defaultdict。
from collections import defaultdict
lst = [('a', 1), ('b', 2), ('c', 3), ('a', 4), ('c', 5)]
group=defaultdict(list)
for k,v in lst:
group[k].append(v)
group
# defaultdict(list, {'a': [1, 4], 'b': [2], 'c': [3, 5]})
Run Code Online (Sandbox Code Playgroud)