#python
#python
Вопрос:
У меня есть что-то вроде этого
print(x)
>>> [('01/01-01/03', 4), ('01/06-01/10', 5), ('01/13-01/17', 4), ('01/20-01/24', 5), ('01/27-01/31', 5), ('02/03-02/07', 5) ... ]
за целый год.
Он содержит str
количество дней в неделе и количество рабочих дней (5 — праздничные дни). Я хотел бы разобраться с этим list
tuples
, чтобы начать с июля (7-й месяц).
Так что что-то вроде этого
x.sort(first occurrence of `07/` in str of index 0 of tuples in list)
Комментарии:
1. Что именно означает «сортировать, чтобы начать с июля»? Что происходит, например, с январем?
2. Июль -> Август -> Сентябрь -> Октябрь -> Ноябрь -> Декабрь -> Январь …. (до июня)
Ответ №1:
Я думаю, это делает то, что вы хотите:
data = [('01/01-01/03', 4), ('01/06-01/10', 5), ('01/13-01/17', 4), ('01/20-01/24', 5), ('01/27-01/31', 5), ('02/03-02/07', 5),
('07/20-07/24', 5), ('07/27-07/31', 5), ('08/03-08/07', 5)]
def sort_key(t):
m = re.match(r"(dd)/(dd)-dd/dd", t[0])
month = int(m.group(1))
day = int(m.group(2))
if month < 7:
month = 12
return month * 100 day
data_sorted = sorted(data, key=sort_key)
print(data_sorted)
Результат:
[('07/20-07/24', 5), ('07/27-07/31', 5), ('08/03-08/07', 5), ('01/01-01/03', 4), ('01/06-01/10', 5), ('01/13-01/17', 4), ('01/20-01/24', 5), ('01/27-01/31', 5), ('02/03-02/07', 5)]