0
辞書を作成しようとしていますが、新しい要素を追加する前に、この要素が辞書にないことを確認する必要があります。それが構築される方法、私の辞書s
は文字列(リストではない)であるキーを持っています。だから私はなぜこのエラーメッセージが表示されるのかわからないのです:TypeError: unhashable type: 'list'
。TypeError:unhashable type: 'list' in my dictionary
men=['h1','h2','h3']
women=['f1','f2','f3']
pref={'h1':['f2','f1','f3'],'h2':['f2','f1','f3'],'h3':['f3','f2','f1']}
rank={'f1':{'h3','h1','h2'},'f2':{'h3','h2','h1'},'f3':{'h1','h2','h3'}}
for n in pref:
pref[n].reverse()
freemen=men
l=len(men)
s={}
while freemen:
m=freemen.pop()
if len(pref[m])==0:
continue
w=pref[m]
if w not in s:
s[w]=m
else:
mprime=s[w]
if rank[w][m]<rank[w][mprime]:
s[w]=m
freemen.append(mprime)
else:
freemen.append(m)
print(s)
とにかく、あなたの問題はこれです:あなたは 'w = pref [m]'と言うので、 'w'はリストです。次に 's not in s'を使います。リストのキーが 's'にあるかどうかをチェックしています。リストには辞書のキーを使うことはできませんが、これはアルゴリズムにとって欲しいものではありません。 –
意味的には、あなたが望むのは、(安定した結婚問題の元の言葉を使うために)与えられた男性が好む女性のリスト全体ではなく、単一の「女性」です。 –