2011-08-09 85 views
0

當你收藏了像人物,街道,愛爾蘭舞蹈團等具有某種名稱標識符的對象時,將它存儲在地圖中被認爲是可以的,或者它被認爲是不好的做法,我應該只是將它存儲作爲列表並每次查詢列表?在地圖中包含對象的「名稱」是否很糟糕?

Ex。

class Person: 
    def __init__(self,name,age): 
     self.name=name 
     self.age=age 
a = [Person("karl",50),Person("abe",20)] 
vs 
b = {"karl" : Person("karl",50), "abe" : Person("abe",20)} 

編輯: 假設獨特性,速度的擔憂可能是關注的,但一般清晰度的目標。

+3

這取決於。名稱是否保證是唯一的?你是否經常看名人? – cdhowie

+1

地圖是一個抽象的概念。如果您按名稱或使用其他類型的鍵查找事物,則您有一張地圖(或者一個多圖,如果這些鍵不唯一)。您可以使用列表來實現地圖概念,這很簡單但效率很低。或者您可以使用語言/庫附帶的高效的現成地圖實現(這是您通常應該做的,除非您有一個非常好的理由)。 –

+0

爲什麼要使用列表而不是地圖?搜索列表如何提高清晰度? – Marcin

回答

0

我認爲這是相當危險的,特別是如果你處理多種編碼,如可以在羅馬字母和其他字符集編寫的名稱,如日語,俄語等

另外正如@cdhowie所提到的那樣,唯一性的概念非常重要。如果有別名,哪一個是規範的?

最後,您將如何處理更改,例如糾正拼寫錯誤?

我沒有看到太多的好處,我看到很多未來使用的風險。

0

該地圖給你不斷的查找時間(好),但你是複製數據(壞)。如果您出於性能方面的原因確實需要不斷的查找時間,那麼請使用地圖,但要小心保持鍵與對象中的值保持同步。如果它對性能不重要,那麼就把它們放在一個數組中。

相關問題