我不知道何时应该使用字典而不是Python上的类。如果一个类可以完成与字典相同的功能,为什么还要使用字典呢?例如,接下来的两个片段执行相同的操作:
使用课程:
class PiggyBank:
def __init__(self, dollars, cents):
self.dollars = dollars
self.cents = cents
piggy1 = PiggyBank(2, 2)
print(piggy1.dollars) # 2
print(piggy1.__dict__) # {'dollars': 2, 'cents': 2}
使用字典:
def create_piggy(dollars, cents):
return {'dollars': dollars, 'cents': cents}
piggy2 = create_piggy(2, 2)
print(piggy2['dollars']) # 2
print(piggy2) # {'dollars': 2, 'cents': 2}
因此,最后,我将创建两个具有相同信息的静态对象。什么时候应该使用类或函数创建实例?
答案 0 :(得分:4)
如果字典足以满足您的用例并且您不被迫使用Class,则可以使用dictionary。但是,如果您需要类的其他好处(如下所示),则可以将其写为类
一些可能需要使用Class的用例
答案 1 :(得分:1)
您通常会在做 dynamic 动作时使用字典-在某些情况下,您写作时不知道所有键或信息代码。还要注意,类具有无法将数字用作属性的限制。
作为一个经典示例(使用collections.Counter
可以提供更好的解决方案,但我们仍会保留其教育价值),如果您有一个要计数的值列表,则可以使用字典来有效地做到这一点:
items_to_count = ['a', 'a', 'a', 'b', 5, 5]
count = {}
for item in items_to_count:
if item in count:
count[item] += 1
else:
count[item] = 1
# count == {'a': 3, 'b': 1, 5: 2}
答案 2 :(得分:1)
为什么要使用字典?
字典是内置容器,具有很多功能,可以免费使用给我们。由于它们是内置的,因此许多功能可能已经过优化。
答案 3 :(得分:1)
dict
通常被称为“关联数组”。它们就像Python中的常规list
一样,除了可以使用字符串(或任何可哈希类型)代替使用整数作为索引。
您当然可以使用Python类实现类似list
和dict
的对象(以及类似set
的对象和类似str
的对象),但是如果已经有一个完全符合您需要的对象类型,您为什么要这么做?
因此,如果您要寻找的只是一个关联数组,那么dict
很可能会为您服务。但是,如果您跳进圈来实现一个已经完成dict
的类的类,那么您将“重新发明轮子”,并为将来的代码读者提供更多的工作,以便弄清楚您的班级正在做的事情是重新实现dict
而没有真正的额外功能。
基本上,如果您只需要一个dict
,则只需使用dict
。否则,您将编写大量额外的代码(可能易于产生错误),而没有真正的收获。