2 回答
TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超5個(gè)贊
Lists是不可散列的,因?yàn)樗鼈兪强勺兊?。你能想象如?adictionary key被分配給 a value,然后它key被改變了嗎?這將是一場(chǎng)噩夢(mèng)。
轉(zhuǎn)換lists成tuples使它們可散列
TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
為什么字典這么快?
因?yàn)椋?dāng)您查找某些內(nèi)容時(shí),python 不會(huì)查找該對(duì)象。相反,它為每個(gè)對(duì)象分配一個(gè)整數(shù)(哈希值),然后搜索該整數(shù)。
但是,僅當(dāng)您將其插入字典時(shí)才會(huì)發(fā)生這種情況。如果對(duì)象的值稍后發(fā)生變化,則哈希值不會(huì),字典將無(wú)法找到該對(duì)象。
因此,您不能將可變對(duì)象放入字典中。對(duì)于列表,最簡(jiǎn)單的解決方案是將其轉(zhuǎn)換為元組,例如,而不是
lst = [1, 2, 3]
x = { lst: "hello" }
寫(xiě)
lst = [1, 2, 3]
x = { tuple(lst): "hello" }
添加回答
舉報(bào)
