python - 默认字典的默认字典?

有没有办法有一个 defaultdict(defaultdict(int)) 以使下面的代码工作?

for x in stuff:
    d[x.a][x.b] += x.c_int

d 需要临时构建,具体取决于 x.ax.b 元素。

我可以使用:

for x in stuff:
    d[x.a,x.b] += x.c_int

但是我将无法使用:

d.keys()
d[x.a].keys()

最佳答案

是这样的:

defaultdict(lambda: defaultdict(int))

当您尝试访问不存在的键时,将调用 defaultdict 的参数(在本例中为 lambda: defaultdict(int))。它的返回值将被设置为该键的新值,这意味着在我们的例子中 d[Key_doesnt_exist] 的值将是 defaultdict(int)

如果您尝试从最后一个 defaultdict 访问 key ,即 d[Key_doesnt_exist][Key_doesnt_exist] 它将返回 0,这是最后一个 defaultdict 的参数的返回值,即 int().

https://stackoverflow.com/questions/5029934/

相关文章:

python - 将 subprocess.Popen 调用的输出存储在字符串中

python - 如何将 time.struct_time 对象转换为 datetime 对象?

javascript - 当您将 Selenium 与 chromedriver 一起使用时,网站可

python - 如何使用 Flask 从 URL 获取命名参数?

python - 如何终止使用 shell=True 启动的 python 子进程

python - PEP8 的 E128 : continuation line under-ind

python - 不重新编译的不区分大小写的正则表达式?

python - 如何在 Python 中获取当前模块中所有类的列表?

python - 从 Django QuerySet 获取 SQL

python - 如何从 Python 中的线程获取返回值?