gpt4 book ai didi

python - 对日期序列进行排序的最 pythonic 方法是什么?

转载 作者:太空狗 更新时间:2023-10-30 02:20:26 25 4
gpt4 key购买 nike

我有一个代表一年中一个月的字符串列表(未排序且不连续):['1/2013', '7/2013', '2/2013', '3/2013', '4/2014', '12/2013', '10/2013', '11/2013 ', '1/2014', '2/2014']

我正在寻找一种 Pythonic 方法来对所有这些进行排序并按照以下建议将每个连续序列分开:

[ ['1/2013', '2/2013', '3/2013', '4/2013'], 
['7/2013'],
['10/2013', '11/2013', '12/2013', '1/2014', '2/2014']
]

有什么想法吗?

最佳答案

基于 the example from the docs that shows how to find runs of consecutive numbers使用 itertools.groupby() :

from itertools import groupby
from pprint import pprint

def month_number(date):
month, year = date.split('/')
return int(year) * 12 + int(month)

L = [[date for _, date in run]
for _, run in groupby(enumerate(sorted(months, key=month_number)),
key=lambda (i, date): (i - month_number(date)))]
pprint(L)

解决方案的关键是与 enumerate() 生成的范围进行差分,以便连续的月份都出现在同一组(运行)中。

输出

[['1/2013', '2/2013', '3/2013'],
['7/2013'],
['10/2013', '11/2013', '12/2013', '1/2014', '2/2014'],
['4/2014']]

关于python - 对日期序列进行排序的最 pythonic 方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23075453/

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