list<实体类>根据某一字段分组取零一字段的平局值
时间: 2023-08-15 10:07:07 浏览: 93
您好,根据您的问题描述,我可以给出以下代码示例供您参考:
```python
from itertools import groupby
from operator import attrgetter
class Entity:
def __init__(self, field1, field2):
self.field1 = field1
self.field2 = field2
entities = [
Entity('group1', 1),
Entity('group1', 2),
Entity('group2', 3),
Entity('group2', 4),
Entity('group2', 5),
Entity('group3', 6),
]
# 根据 field1 分组
key_func = attrgetter('field1')
sorted_entities = sorted(entities, key=key_func)
grouped_entities = groupby(sorted_entities, key_func)
# 计算每个分组的 field2 平均值
for group, group_entities in grouped_entities:
field2_sum = sum(entity.field2 for entity in group_entities)
field2_count = len(list(group_entities))
field2_avg = field2_sum / field2_count if field2_count > 0 else 0
print(f'group: {group}, field2_avg: {field2_avg}')
```
以上代码做了如下事情:
1. 定义了一个实体类 `Entity`,该类有两个字段 `field1` 和 `field2`。
2. 定义了一个列表 `entities`,其中包含了多个 `Entity` 对象实例。
3. 使用 `attrgetter` 函数定义了一个函数 `key_func`,用于从 `Entity` 对象中获取 `field1` 字段的值,以便后续分组使用。
4. 使用 `sorted` 函数将 `entities` 列表按照 `field1` 字段的值进行排序。
5. 使用 `groupby` 函数按照 `field1` 字段的值将 `sorted_entities` 列表中的 `Entity` 对象分组。
6. 遍历每个分组,计算该分组中所有 `Entity` 对象的 `field2` 字段的平均值,并输出结果。
希望以上代码能够帮助到您。如果您有任何疑问,请随时提出。
阅读全文