按照多个属性(包括嵌套属性)对对象进行分组,并汇总它们的值。
创始人
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安装包... 透视工具!aapoker安装包怎么使用(透视)aapoker万能辅助器,AA德州教程(有挂揭秘)1、...
透视数据!aapoker辅助工... 透视数据!aapoker辅助工具安全吗(透视)aapoker插件,安装教程(有挂细节);1、这是跨平...
透视总结!aapoker怎么设... 透视总结!aapoker怎么设置提高好牌几率(透视)aapoker辅助器是真的吗,解密教程(有挂揭秘...
透视系统!aapoker如何设... 透视系统!aapoker如何设置胜率(透视)aa poker透视软件,2025新版教程(有挂解说)1...
透视挂!aapoker辅助器怎... 透视挂!aapoker辅助器怎么用(透视)aapoker ai插件,解密教程(有挂揭秘)1.aapo...
透视中牌率!aa poker透... 透视中牌率!aa poker透视软件(透视)aapoker透视插件,解密教程(有挂解说)1、操作简单...
透视规律!aapoker免费透... 透视规律!aapoker免费透视脚本(透视)aapoker插件下载,AI教程(有挂揭秘)1、aapo...
透视新版!aapoker辅助工... 透视新版!aapoker辅助工具安全吗(透视)aapoker万能辅助器,教你攻略(有挂黑科技)1、构...
透视系统!aapoker安装包... 透视系统!aapoker安装包怎么使用(透视)aapoker透视插件,解说技巧(有挂细节)小薇(透视...
透视透视!aapoker俱乐部... 透视透视!aapoker俱乐部靠谱吗(透视)aapoker俱乐部靠谱吗,黑科技教程(有挂细节);1、...