У меня есть светофор Enum, определяющий возможные состояния:
class TrafficLightPhase(Enum):
RED = "RED"
YELLOW = "YELLOW"
GREEN = "GREEN"
Я опрашиваю светофор, чтобы получать текущее состояние каждую секунду, и помещаю значения в deque
с помощью этой функции:
def read_phases():
while running:
current_phase = get_current_phase_phases()
last_phases.append(current_phase)
time.sleep(1)
Я хочу сгруппировать последовательности одного и того же состояния, чтобы узнать временные характеристики фаз светофора.
Я пытался использовать Counter
класс collections
, например:
counter = collections.Counter(last_phases)
Он очень хорошо группирует разные состояния, но я не могу знать, когда начнется следующий цикл. Существует ли такая структура данных, как Counter
, которая позволяет повторять? , чтобы я мог получить результаты, такие как:
Counter({
'RED': 10,
'GREEN': 10,
'YELLOW': 3,
'RED': 10,
'GREEN': 10,
'YELLOW': 3,
'RED': 10,
'GREEN': 10,
'YELLOW': 3
})
вместо:
Счетчик ({
«КРАСНЫЙ»: 30,
«ЗЕЛЕНЫЙ»: 30,
«ЖЕЛТЫЙ»: 9
})