按照多个属性(包括嵌套属性)对对象进行分组,并汇总它们的值。
创始人
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属性。你可以根据自己的需求修改示例代码来适应不同的对象属性和汇总方式。

相关内容

热门资讯

黑科技科技(wepoke智能a... 黑科技科技(wepoke智能ai)wepower使用说明书(wepOkE)素来是真的有挂(确实有挂)...
黑科技模拟器(wepoke智能... WePoker透视辅助工具核心要点解析‌,黑科技模拟器(wepoke智能ai)wepoke是机器发牌...
黑科技脚本(wepokeai代... 您好,这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款游戏中打牌都...
黑科技辅助挂(wepoke真的... 黑科技辅助挂(wepoke真的有挂)wepoke 软件(wEPOKE)固有真的有挂(有挂猫腻)-哔哩...
黑科技辅助挂(wepoke黑科... 黑科技辅助挂(wepoke黑科技)wepoke软件透明挂演示(wEpOke)一直真的有挂(真的有挂)...
黑科技app(wepoke真的... 此外,数据分析德州()辅助神器app还具备辅助透视行为开挂功能,通过对客户透明挂的深入研究,你可以了...
黑科技智能ai(wepoke辅... 黑科技智能ai(wepoke辅助插件)wepoke软件透明(WEPOke)先前是有挂(果真有挂)-哔...
黑科技模拟器(wepoke透明... 黑科技模拟器(wepoke透明黑科技)wepoke德州扑克用ai代打(WEPOKE)最初存在有挂(有...
黑科技插件(wepoke辅助插... 黑科技插件(wepoke辅助插件)wepoke软件透明(WEPOke)从来是真的有挂(有挂解惑)-哔...
黑科技美元局(wepoke智能... 黑科技美元局(wepoke智能ai)wepoke辅助真的假的(wepoKE)原先真的有挂(竟然有挂)...