Я кодирую цепочку Маркова N-го порядка.
Это выглядит примерно так:
class Chain:
def __init__(self, order):
self.order = order
self.state_table = {}
def train(self, next_state, *prev_states):
if len(prev_states) != self.order: raise ValueError("prev_states does not match chain order")
if prev_states in self.state_table:
if next_state in self.state_table[prev_states]:
self.state_table[prev_states][next_state] += 1
else:
self.state_table[prev_states][next_state] = 0
else:
self.state_table[prev_states] = {next_state: 0}
К сожалению, список и кортежи не подлежат изменению, и я не могу использовать их в качестве ключевых слов в комментариях ...
Надеюсь, я достаточно хорошо объяснил свою проблему, чтобы вы поняли, чего я пытаюсь достичь.
Любые хорошие идеи, как я могу использовать несколько значений для словаря ключевых слов?
Дополнительный вопрос:
Я не знал, что кортежи можно хэшировать.
Но энтропия для хэшей кажется низкой. Возможны ли хэш-коллизии для кортежей?!