在地图中包含对象的“名称”是不是很糟糕?

时间:2011-08-09 03:22:31

标签: language-agnostic

当你拥有像人,街道,爱尔兰舞蹈团等具有某种名称标识符的对象集合时,将它存储在地图中是否可以,或者它被认为是一种不好的做法,我应该只存储它作为一个列表并每次查询列表?

实施例。

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)}

编辑: 假设唯一性,速度问题可能会引起关注,但总体清晰度是目标。

2 个答案:

答案 0 :(得分:0)

我认为这是相当危险的,特别是如果你处理多种编码,例如可以用罗马字母和其他字符集编写的名称,例如日语,俄语等。

此外,正如@cdhowie所提到的,唯一性的概念非常重要。如果使用别名,哪一个是规范的?

最后,您将如何处理更改,例如更正拼写错误?

我没有看到很多好处,我认为将来使用会有很多风险。

答案 1 :(得分:0)

地图为您提供恒定的查找时间(好),但您正在复制数据(错误)。如果出于性能原因确实需要常量查找时间,则使用映射但要小心保持键与对象中的值同步。如果它对性能不重要,那就把它们放在一个数组中。