我最近发现并开始使用默认字典来替换几个更庞大的结构。我在“python 之禅”中读到,python 的关键点之一是“应该有一种——最好只有一种——明显的方式来做到这一点。”
基于该标准(或者可能更实际地基于内存使用或速度)以下哪个(或完全不同的东西)是最好的?我有一种预感,第一个是正确的,但想听听其他人的意见。
my_dict = defaultdict(int)
for generic in iterable:
my_dict[generic] +=1
或者:
my_dict = {}
for generic in iterable:
if generic not in my_dict:
my_dict[generic] = 1
else:
my_dict[generic]+=1
或者:
my_dict = {}
for generic in iterable:
try:
my_dict[generic] += 1
except(KeyError):
my_dict[generic] = 1
使用 my_dict = defaultdict(list) 和使用 append 函数也是如此。假设使用了多个 for 循环或其他条件,而不是简单地从单个迭代中计算通用值,因为这显然具有不同的特性。