我正在編碼N階馬爾可夫鏈。Python字典與列表關鍵字
它是這樣的:
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}
Unfortunally,列表和元組是unhashable,我不能在http://stardict.sourceforge.net/Dictionaries.php下載使用它們作爲關鍵字... 我都希望解釋我的問題不夠好,你明白我試圖達到的目標。
任何好主意我怎麼可以使用多個值的字典關鍵字?我不知道元組是可散列的。 但是哈希的熵似乎很低。是否有元組哈希碰撞可能?
*列表和元組不可用* - 元組是可哈希的。 (如果他們的內容是可散列的,正如@larsmans正確指出的那樣) – eumiro 2011-12-30 11:56:49
One-space-indent?這是非常難看的。您應該遵循PEP-8並使用4格縮進。 – ThiefMaster 2011-12-30 11:57:44
eumiro,謝謝!增加了關於散列衝突的後續問題 – 2011-12-30 11:58:03