python按组求和这样如何进行d

2024-09-29 05:32:26 发布

您现在位置:Python中文网/ 问答频道 /正文

说明: 我的mongodb数据如下:

     { "_id" : "5620150715", "timeStamp" : NumberLong("1436889600000"), "userId" : 56, "WorldAmounts" : [ { "count" : NumberLong(10), "Address" : "aaa" }, { "count" : NumberLong(20), "Address" : "bbb" } ], "Amounts" : [ { "count" : NumberLong(10), "ipAddress" : "aaa" }, { "count" : NumberLong(20), "Address" : "bbb" } ], "date" : "20150715", "localAmounts" : [ ] }

问题:
如何按all项分组,键是“userId”和WorldAmounts中的“Address”?你知道吗

测试数据如下:

[{'userId':1, 'localA': [{'address':'A','count':7},{'address':'B', 'count':10}], 'localB': [{'address':'X','count':5}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':5}]},{'userId':2, 'localA': [{'address':'A','count':7},{'address':'B', 'count':10}], 'localB': [{'address':'X','count':5}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':5}]},{'userId':1, 'localA': [{'address':'C','count':7}], 'localB': [{'address':'X','count':5}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':5}]}]

结果如下: 如果userId是diff not use groupby,则localALLLocalA + LocalB,如果相同的address值,则count的和将附加本地

[{'userId':1, 'localA': [{'address':'C','count':7},{'address':'A','count':7},{'address':'B', 'count':10}], 'localB': [{'address':'X','count':10}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':10}]},
{'userId':2, 'localA': [{'address':'A','count':7},{'address':'B', 'count':10}], 'localB': [{'address':'X','count':5}], 'localALL':[{'address':'A','count':7},{'address':'B', 'count':10},{'address':'X','count':5}]}
]

thx alfasin的建议最好的简单例子如下:

输入: [{'abs':1,'lad':[{'count':2,'desc':'A'},{'count':3,'desc':4}}, {'abs':1,'lad':[{'count':3,'desc':'A'},{'count':1,'desc':5}]

输出:

[{'abs':1,'lst':[{'count':5,'desc':3},{'count':3,'desc':4},{'count':1,'desc':5}]


Tags: addressmongodbcountabsdescbbbuseridaaa