私は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、リストやタプルは非ハッシュある、と私はdictsのキーワードとしてそれらを使用することはできません... を私が達成しようとしているもの。
どのように私は辞書のキーワードに複数の値を使用できますか?
追加質問:
タプルがハッシュ可能であることはわかりませんでした。 しかし、ハッシュのエントロピーは低いようです。タプルのハッシュ衝突が可能ですか?
*リストとタプルはハッシュ可能です* - タプルはハッシュ可能です。 (コンテンツがハッシュ可能な場合、@ larsmansが正しく記述されているため) – eumiro
1スペースインデント?それは読むのが非常に醜いです。 PEP-8に従って、4桁のインデントを使用する必要があります。 – ThiefMaster
eumiro、ありがとう!ハッシュ衝突に関する追加質問 –