gpt4 book ai didi

python - 根据包含列表对列表进行排序

转载 作者:行者123 更新时间:2023-11-30 22:00:11 24 4
gpt4 key购买 nike

我必须根据索引 0 的值对包含其他列表的列表进行排序。看到下面的示例可能很清楚,我必须根据每个嵌套列表的年份对“tempdb”进行排序,但我没有线索。我不允许导入像 NumPy 等库,所以只是“裸”Python 代码。

列表示例:

tempdb = [
['8-8-2007', '268', 'Anonymized', 'aanname laboratoriumonderzoek', 'aug', '2007'],
['8-8-2015', '268', 'Anonymized', 'aanname laboratoriumonderzoek', 'aug', '2015'],
['30-11-2005', '268', 'Anonymized', 'aanname laboratoriumonderzoek', 'nov', '2005'],
['8-8-2006', '268', 'Anonymized', 'ordertarief', 'aug', '2006'],
['30-11-2006', '268', 'Anonymized', 'ordertarief', 'nov', '2006'],
['30-11-2003', '268', 'Anonymized', 'gammaglutamyltranspeptidase', 'nov', '2003'],
['30-11-2006', '268', 'Anonymized', 'melkzuurdehydrogenase -ldh- kinetisch', 'nov', '2006'],
['30-11-2006', '268', 'Anonymized', 'alkalische fosfatase -kinetisch-', 'nov', '2006'],
['30-11-2002', '268', 'Anonymized', 'natrium vlamfotometrisch', 'nov', '2002'],
]

这是我发现并已经尝试过的东西,但它对我不起作用。

sort_on   = lambda pos:     lambda x: x[pos]
tempdb = sorted(tempdb,key=sort_on(1))

我的目标是从最早的年份(例如 2002 年)开始,到最新的年份(例如 2015 年)结束

最佳答案

您可以使用datetime模块来比较日期:

from datetime import datetime

tempdb = [
['8-8-2007', '268', 'Anonymized', 'aanname laboratoriumonderzoek', 'aug', '2007'],
['8-8-2015', '268', 'Anonymized', 'aanname laboratoriumonderzoek', 'aug', '2015'],
['30-11-2005', '268', 'Anonymized', 'aanname laboratoriumonderzoek', 'nov', '2005'],
['8-8-2006', '268', 'Anonymized', 'ordertarief', 'aug', '2006'],
['30-11-2006', '268', 'Anonymized', 'ordertarief', 'nov', '2006'],
['30-11-2003', '268', 'Anonymized', 'gammaglutamyltranspeptidase', 'nov', '2003'],
['30-11-2006', '268', 'Anonymized', 'melkzuurdehydrogenase -ldh- kinetisch', 'nov', '2006'],
['30-11-2006', '268', 'Anonymized', 'alkalische fosfatase -kinetisch-', 'nov', '2006'],
['30-11-2002', '268', 'Anonymized', 'natrium vlamfotometrisch', 'nov', '2002'],
]

tempdb = sorted(tempdb, key=lambda x: datetime.strptime(x[0], '%d-%m-%Y'))

for i in tempdb: print(i)

输出:

['30-11-2002', '268', 'Anonymized', 'natrium vlamfotometrisch', 'nov', '2002']
['30-11-2003', '268', 'Anonymized', 'gammaglutamyltranspeptidase', 'nov', '2003']
['30-11-2005', '268', 'Anonymized', 'aanname laboratoriumonderzoek', 'nov', '2005']
['8-8-2006', '268', 'Anonymized', 'ordertarief', 'aug', '2006']
['30-11-2006', '268', 'Anonymized', 'ordertarief', 'nov', '2006']
['30-11-2006', '268', 'Anonymized', 'melkzuurdehydrogenase -ldh- kinetisch', 'nov', '2006']
['30-11-2006', '268', 'Anonymized', 'alkalische fosfatase -kinetisch-', 'nov', '2006']
['8-8-2007', '268', 'Anonymized', 'aanname laboratoriumonderzoek', 'aug', '2007']
['8-8-2015', '268', 'Anonymized', 'aanname laboratoriumonderzoek', 'aug', '2015']

如果您想按相反方向排序,请将 reverse=True 添加到 sorted() 函数中。

关于python - 根据包含列表对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54388606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com