现在我有一个list列表列表中有多个机器对象机器对象中有来源、机器码、硬件名称、创建时间等字段现在我需要将这个list按来源、机器码、硬件名称进行分组并取出各分组中最大的创建时间
你可以使用Python中的itertools.groupby函数来对列表进行分组,然后使用max函数来取出每个分组中的最大创建时间。
下面是一个示例代码:
from itertools import groupby
# 假设你的机器对象列表为 machines
# machines = [Machine(source='A', code='001', name='Hardware1', created_time='2022-01-01'),
# Machine(source='A', code='001', name='Hardware1', created_time='2022-01-02'),
# Machine(source='A', code='002', name='Hardware2', created_time='2022-01-03'),
# Machine(source='B', code='003', name='Hardware3', created_time='2022-01-04')]
# 首先按照来源、机器码、硬件名称对机器对象列表进行排序
machines.sort(key=lambda machine: (machine.source, machine.code, machine.name))
# 使用groupby函数进行分组,并使用max函数取出每个分组中最大的创建时间
result = []
for key, group in groupby(machines, key=lambda machine: (machine.source, machine.code, machine.name)):
max_created_time = max(machine.created_time for machine in group)
result.append((key, max_created_time))
# 输出结果
for key, max_created_time in result:
print(key, max_created_time)
这样,你就可以得到按来源、机器码、硬件名称分组后的最大创建时间的列表
原文地址: https://www.cveoy.top/t/topic/iCMz 著作权归作者所有。请勿转载和采集!