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

测试数据:

[['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的效果

阅读 2k
2 个回答
✓ 已被采纳新手上路,请多包涵

问题解决了,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}}

字典推导式做不出的,要一次迭代聚合分组,怎么说也要辅助变量,做是可以做的,只是不能一行推导式实现。
或者你可以使用numpy包的groupby分组函数,这个包提供了很多数据处理工具

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题