python字典解析式中能否进行聚合运算、缓存结果,或类似scala的map一样进行递归数据处理

瓦城管 发布于 09/11 11:50
阅读 40
收藏 0

测试数据:

[['a','测试1'],

['a','测试1'],

['a','测试2'],

['b','测试1'],

['b','测试2'],

['c','测试1'],]

希望能够通过字典解析式对数据按照第一列进行聚合并生成如下结果:

{'a':{'测试1','测试2'},'b':{'测试1','测试2'},'c':{'测试1'},}

字典解析式应该怎么做?

我发现字典解析式列表解析式面对1对1的问题时非常好用,但是在数据聚合的时候多对1的关系时该怎么办,能不能达到scala的reducebykey的效果

 

加载中
0
瓦城管
瓦城管

问题解决了,python可以像scala的map和reduce一样进行数据聚合:

from functools import reduce
# 测试数据
oidproductlist = [['a', '测试1'],
                  ['a', '测试1'],
                  ['a', '测试2'],
                  ['b', '测试1'],
                  ['b', '测试2'],
                  ['c', '测试1'], ]
oidproductdict = {key: reduce(lambda x, y: x | y, [{element1[1]} for element1 in oidproductlist if key == element1[0]]) for key in {element[0] for element in oidproductlist}}

 

返回顶部
顶部