按照多个属性(包括嵌套属性)对对象进行分组,并汇总它们的值。
创始人
2024-08-23 20:00:12
0

在Python中,可以使用itertools.groupby函数和collections.defaultdict类来按照多个属性对对象进行分组,并汇总它们的值。

首先,导入必要的模块:

import itertools
from collections import defaultdict

假设有一个对象列表objects,每个对象都有多个属性,例如namecategoryvalue。我们想要按照namecategory属性对对象进行分组,并汇总它们的value属性。

objects = [
    {'name': 'object1', 'category': 'category1', 'value': 10},
    {'name': 'object2', 'category': 'category2', 'value': 20},
    {'name': 'object1', 'category': 'category1', 'value': 30},
    {'name': 'object2', 'category': 'category1', 'value': 40},
    {'name': 'object3', 'category': 'category2', 'value': 50}
]

使用itertools.groupby函数按照namecategory属性对对象进行分组:

grouped_objects = itertools.groupby(objects, key=lambda x: (x['name'], x['category']))

然后,使用collections.defaultdict类来汇总每个组的value属性:

grouped_values = defaultdict(int)

for key, group in grouped_objects:
    for obj in group:
        grouped_values[key] += obj['value']

最后,打印汇总结果:

for key, value in grouped_values.items():
    print(key, value)

完整的示例代码如下:

import itertools
from collections import defaultdict

objects = [
    {'name': 'object1', 'category': 'category1', 'value': 10},
    {'name': 'object2', 'category': 'category2', 'value': 20},
    {'name': 'object1', 'category': 'category1', 'value': 30},
    {'name': 'object2', 'category': 'category1', 'value': 40},
    {'name': 'object3', 'category': 'category2', 'value': 50}
]

grouped_objects = itertools.groupby(objects, key=lambda x: (x['name'], x['category']))

grouped_values = defaultdict(int)

for key, group in grouped_objects:
    for obj in group:
        grouped_values[key] += obj['value']

for key, value in grouped_values.items():
    print(key, value)

输出结果:

('object1', 'category1') 40
('object2', 'category2') 20
('object2', 'category1') 40
('object3', 'category2') 50

以上示例代码按照namecategory属性对对象进行了分组,并汇总了它们的value属性。你可以根据自己的需求修改示例代码来适应不同的对象属性和汇总方式。

相关内容

热门资讯

黑科技脚本!德扑起手牌胜率图,... 黑科技脚本!德扑起手牌胜率图,aapoker辅助实际测试,必备教程(有挂规律)-哔哩哔哩;人气非常高...
黑科技ai代打!德扑之星(智能... 1、黑科技ai代打!德扑之星(智能ai)本然真的有挂(有挂玄学)-哔哩哔哩。2、德扑之星透视辅助简单...
黑科技插件!wepokeai代... 黑科技插件!wepokeai代打,wepoke辅助有挂吗,必备教程(有挂详情)-哔哩哔哩(1)黑科技...
黑科技好牌!wepower有外... 1、黑科技好牌!wepower有外挂吗(ai辅助)好像存在有挂(有挂机器人)-哔哩哔哩。2、wepo...
黑科技ai!微扑克ai辅助工具... 黑科技ai!微扑克ai辅助工具,aapoker俱乐部,透明挂教程(有挂介绍)-哔哩哔哩1、许多玩家不...
黑科技规律!wopoker分析... 黑科技规律!wopoker分析器(ai辅助)先前存在有挂(有挂透明挂)-哔哩哔哩1、许多玩家不知道w...
黑科技神器!Wepoke透明挂... 黑科技神器!Wepoke透明挂,wepoke辅助德之星,教你教程(有挂总结)-哔哩哔哩是一款可以让一...
黑科技透明挂!wepower系... 黑科技透明挂!wepower系统规律(ai代打)本然真的是有挂(有挂最新款)-哔哩哔哩1、不需要AI...
黑科技ai!wpk德州有挂吗,... 黑科技ai!wpk德州有挂吗,Wepoke透明挂,切实教程(有挂透明)-哔哩哔哩1、wpk德州有挂吗...
黑科技辅助挂!wpk外挂是真的... 黑科技辅助挂!wpk外挂是真的还是(黑科技)确实是有挂(有挂代打)-哔哩哔哩;支持2-10人实时对战...