Warm tip: This article is reproduced from serverfault.com, please click

python-collections.defaultdict 如何工作?

(python - How does collections.defaultdict work?)

发布于 2011-05-05 15:45:00

我已经阅读了 python 文档中的示例,但仍然无法弄清楚这种方法的含义。有人可以帮忙吗?这是python文档中的两个示例

>>> from collections import defaultdict

>>> s = 'mississippi'
>>> d = defaultdict(int)
>>> for k in s:
...     d[k] += 1
...
>>> d.items()
[('i', 4), ('p', 2), ('s', 4), ('m', 1)]

>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
>>> d = defaultdict(list)
>>> for k, v in s:
...     d[k].append(v)
...
>>> d.items()
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

参数intlist是为了什么?

Questioner
Lanston
Viewed
0
Sven Marnach 2019-02-10 22:35:35

通常,KeyError如果你尝试使用当前不在字典中的键来获取项目,则Python 字典会抛出 a defaultdict相反只会创建你尝试访问的任何物品(当然前提是他们还不存在)。要创建这样的“默认”项,它会调用你传递给构造函数的函数对象(更准确地说,它是一个任意的“可调用”对象,其中包括函数和类型对象)。对于第一个示例,默认项是使用 创建的int(),它将返回整数对象0对于第二个示例,使用 来创建默认项list(),它返回一个新的空列表对象。