Python 在工作日列表中添加破折号
我有一个序列:Python 在工作日列表中添加破折号,python,python-3.x,Python,Python 3.x,我有一个序列: WEEKDAYS = [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', ] 有如下输入: ['Sun', 'Thu', 'Fri', 'Sat'] 我想要像这样的输出: Sun, Thu - Sat 我很困惑怎么做。这里有一种方法可以用它来做。输入列表中的项目根据其在工作日中的分布情况,通过将索引差为1的项目分组,进行聚类: from itertools import
WEEKDAYS = [
'Sun',
'Mon',
'Tue',
'Wed',
'Thu',
'Fri',
'Sat',
]
有如下输入:
['Sun', 'Thu', 'Fri', 'Sat']
我想要像这样的输出:
Sun, Thu - Sat
我很困惑怎么做。这里有一种方法可以用它来做。输入列表中的项目根据其在
工作日
中的分布情况,通过将索引差为1的项目分组,进行聚类:
from itertools import count, groupby
lst = ['Sun', 'Thu', 'Fri', 'Sat']
c = count()
new_lst = []
for _, g in groupby(lst, lambda x: WEEKDAYS.index(x)-next(c)):
g = list(g)
if len(g) > 2:
new_lst.append(g[0] + '-' + g[-1])
else:
new_lst.extend(g)
print(new_lst)
# ['Sun', 'Thu-Sat']
如果需要避免当前方法中的多个
list.index
调用,您可以在工作日将list设置为字典。请更简单地解释输入是如何派生的,我的意思是:我有mylist=[0,5,6,7,8]
。5到8是一个序列号,而0和6不是,因此输出类似于0,5-8
。是否要环绕范围?例如,输入是否应产生输出Fri-Sun
?