数据容器:类vs字典

时间:2012-09-17 23:07:47

标签: python class dictionary

在我看来,字典被鼓励定义类和使用类。什么时候应该在课堂上使用字典而另一种方式呢?

例如,如果我想要一个人的字典,每个人都有一个名字和其他属性,有两种简单的方法:

  1. 创建人物词典。每个键都是人名,值将是人员拥有的所有属性的字典。

  2. 创建一个包含这些属性的类Person,然后使用Person的字典,将名称作为键,将Person对象作为值。

  3. 这两个解决方案似乎都有效并且完成了目标,但似乎仍然可以使用python中的字典。实现是不同的,如果我想来回切换,我可能会遇到很多变化,从基于类的实现转到基于字典的实现,反之亦然。

    那我该怎么换?

2 个答案:

答案 0 :(得分:4)

字典是开始使用或尝试解决问题的方法的好方法。它们不能代替精心设计的课程。有时它是正确的“最终解决方案”,也是处理“我只需要携带一些数据”需求的最有效方法。我发现有时候从字典开始是有用的,并且通常最终编写一些函数来提供我正在处理的特定情况所需的其他行为。在某些时候,我通常会发现切换到使用类而不是字典会更整洁,更清洁。这通常取决于满足情况需要所需的行为的数量和复杂程度。因为在Python中很容易定义和使用类,所以我发现我很早就从“字典加函数”切换到了类。 (我发现的一件事是,“快速解决一起解决方案”程序在很多情况下都具有自己的生命 - 并且拥有可以扩展和重构的真正类而不是大量的实际类更高效。 (ab)使用词典的代码。

答案 1 :(得分:2)

除非您还希望使用数据封装行为,否则应使用字典。类不仅用于存储数据,还用于指定对该数据执行的操作。