如何对没有硬编码字段值的对象进行排序?

2024-05-12 22:09:35 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一堆东西,父亲。所以每个父亲都会有一堆孩子。无数的孩子。每有一个父亲,就有许多孩子。你知道吗

我想按孩子的平均年龄给每个父亲分类。你知道吗

因为孩子的数量可以改变,他们的年龄也会增加,所以我不一定要把平均年龄硬编码到父亲模型中。我需要有一个动态可用的值,以某种方式缓存,以便它可以快速排序的平均儿童年龄时,看10万名父亲。你知道吗

你对如何有效地做到这一点有什么想法吗?我敢肯定lambdas不够快也不够实用。你知道吗


Tags: 模型编码数量排序方式分类孩子动态
2条回答

计算并缓存(硬代码)“平均出生日期”而不是平均年龄并按其排序。它会给你同样的结果,它不会改变,除非父亲得到另一个孩子,然后你可以重新计算它的父亲。你可以这样找到平均日期

from datetime import datetime

kids_dobs = ['1/2/1990', '3/4/1993', '5/6/1995']
dates = [datetime.strptime(dob, "%d/%m/%Y") for dob in kids_dobs]
timestamps = [date.timestamp() for date in dates]
avg_timestamp = sum(timestamps) / len(timestamps)
avg_date = datetime.fromtimestamp(avg_timestamp)

print(avg_date.strftime("%d/%m/%Y"))  # 02/12/1992

使用排序和lambda,例如:

sorted(father_list, key=lambda: father: avg_children(father))

你可以检查一下: How to sorting

相关问题 更多 >