3 回答

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
一個(gè)list
保持秩序,dict
而set
不要:當(dāng)你關(guān)心的秩序,因此,您必須使用list
(如果你的容器的選擇是有限的這三個(gè),當(dāng)然;-)。
dict
與每個(gè)鍵關(guān)聯(lián)一個(gè)值,而list
而set
僅包含值:很明顯,非常不同的用例。
set
要求項(xiàng)目是可哈希的,list
不是:如果您有不可哈希的項(xiàng)目,則不能使用,set
而必須使用list
。
set
禁止重復(fù),list
不禁止:也是至關(guān)重要的區(qū)別。(可以在以下位置找到“多重集”,該多重集將重復(fù)項(xiàng)映射到不止一次存在的項(xiàng)目的不同計(jì)數(shù)中;如果出于某些奇怪的原因而無(wú)法導(dǎo)入,則collections.Counter
可以將其構(gòu)建為,或者在2.7之前的版本中Python作為,使用項(xiàng)目作為鍵,并將相關(guān)值作為計(jì)數(shù))。dict
collections
collections.defaultdict(int)
在set
(或dict
鍵中)中檢查值的成員身份非??旖荩ɑㄙM(fèi)一個(gè)恒定,短的時(shí)間),而在列表中,它花費(fèi)的時(shí)間與列表的長(zhǎng)度成正比(在一般情況下和最壞情況下)。因此,如果您有可散列的項(xiàng)目,則不關(guān)心順序或重復(fù)項(xiàng),而希望快速進(jìn)行成員資格檢查set
比更好list
。
添加回答
舉報(bào)