2011-08-09 56 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

该地图给你不断的查找时间(好),但你是复制数据(坏)。如果您出于性能方面的原因确实需要不断的查找时间,那么请使用地图,但要小心保持键与对象中的值保持同步。如果它对性能不重要,那么就把它们放在一个数组中。

相关问题