Вам нужно только поддерживать текущее состояние для обоих компонентов по мере продвижения вперед по временной шкале.
from functools import reduce
timeLine = []
workingOrNot = []
states = [ (item[0],item[1][:2],item[1][2:]) for item in a ]
combined = dict()
for time,component,state in states:
combined[component] = state
timeLine.append(time)
components = "".join(sorted("".join(s) for s in combined.items()))
workingOrNot.append(components)
обратите внимание, что это было бы проще, если бы ваши идентификаторы компонентов и рабочие состояния были отдельными полями (это, по сути, то, что я должен был сделать перед обработкой данных)
Некоторые вещи у меня на уме:
Мы разработали много приложений winforms в том месте, где я работал. ClickOnce значительно упростил процесс развертывания.