0
我想構建一個字典,但在添加新元素之前,我必須檢查該元素是否已經存在於字典中。它的構造方式,我的字典s
有鍵是字符串(不是列表)。這就是爲什麼我不知道爲什麼我會收到此錯誤消息:TypeError: unhashable type: 'list'
。TypeError:在我的字典中不可用的類型:'list'
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'是一個列表。那麼你使用'w不是s';你正在檢查列表中是否有's'鍵。除了列表不能是字典鍵之外,這不是你想要的算法。 –
從語義上講,你想要的是一個單一的「女人」,而不是一個給定男人喜歡的整個女人名單(使用穩定婚姻問題的原始語言)。 –