我有一个序列:
WEEKDAYS = [
'Sun',
'Mon',
'Tue',
'Wed',
'Thu',
'Fri',
'Sat',
]
有如下输入:
['Sun', 'Thu', 'Fri', 'Sat']
我希望输出如下:
Sun, Thu - Sat
我很困惑怎么做。
答案 0 :(得分:3)
这是使用itertools.groupby
执行此操作的一种方法。输入列表中的项目根据它们在WEEKDAYS
中的分布进行聚类,方法是将索引差异为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']
如果您需要避免在当前方法中进行多次WEEKDAYS
调用,则可以将列表list.index
设为字典。