我正在编写一个 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}
不幸的是,列表和元组是不可散列的,我不能将它们用作字典中的关键字......我希望我已经很好地解释了我的问题,让你理解我试图实现的目标。
有什么好主意如何为字典关键字使用多个值?
后续问题:
我不知道元组是可散列的。但是哈希的熵似乎很低。元组可能存在哈希冲突吗?