В настоящее время я пытаюсь объединить несколько кортежей в списке. Вот то, что я до сих порОбъединить несколько кортежей в списке python
dates = [(u'13', u'01', u'19:00', u'Event 1', u'1', u'', u''),
(u'06', u'02', u'10:00', u'Event 2', u'0', u'', u''),
(u'07', u'02', u'09:00', u'Event 2', u'0', u'', u''),
(u'24', u'02', u'20:00', u'Event 3', u'1', u'', u''),
(u'25', u'02', u'19:30', u'Event 4', u'1', u'', u''),
(u'8', u'04', u'', u'Event 5', u'1', u'', u''),
(u'9', u'04', u'', u'Event 5', u'1', u'', u''),
(u'10', u'04', u'', u'Event 5', u'1', u'', u''),
(u'27', u'04', u'20:00', u'Event 6', u'1', u'', u'')]
prev_name = None
prev_day = None
counter = 1
newList = []
for value in dates:
if prev_name is None and prev_day is None:
prev_name = value[3]
prev_day = value[0]
else:
if not value[2]:
if prev_name == value[3] and int(value[0]) == (int(prev_day) + 1):
prev_name = value[3]
prev_day = value[0]
counter += 1
newList.append((value[0], value[3], counter))
continue
else:
prev_name = value[3]
prev_day = value[0]
counter = 1
newList.append((value[0], value[3], counter))
continue
newList.append((value[0], value[3]))
for value in newList:
print value
В списке я получаю выглядит следующим образом:
(u'13', u'Event 1')
(u'06', u'Event 2')
(u'07', u'Event 2')
(u'24', u'Event 3')
(u'25', u'Event 4')
(u'8', u'Event 5', 1)
(u'9', u'Event 5', 2)
(u'10', u'Event 5', 3)
(u'27', u'Event 6')
То, что я пытаюсь сделать, это объединить эти 3x кортежи, где я добавил счетчик на конец. Но не в обычном способе слияния. Я хочу удалить все, кроме первой записи, но и перенести счетчик на него.
Так
(u'8', u'Event 5', 1)
(u'9', u'Event 5', 2)
(u'10', u'Event 5', 3)
должны стать
(u'8', u'Event 5', 3)
Я уже получил список, чтобы добавить счетчик в конце концов, если это reoccuring событие. Но изо всех сил пытаемся объединить это в одну запись списка. Это для ical экспорта, где вместо того, чтобы делать одну запись за каждый день, она должна создать единую запись, но с длиной + x дней.
Спасибо, именно то, что я был после. Он также сохраняет порядок. У меня теперь есть общее количество на каждом событии, но это нормально. Я вижу, что событие 2 было нетронутым. Таким образом, он работает только для событий без времени и где совпадение имени, правильно? – derchris
Хорошо, просто протестирован с результирующим ical. Как и в случае с вышеуказанными данными, событие 2 должно иметь 2x записи. Но при группировке по имени результат равен 1. Он должен группироваться только в том случае, если не установлено никакого времени, например. данные [2] – derchris
любезно предоставляют желаемый выход по данному примеру – hemraj