首页 > 解决方案 > 带有两个参数的 defaultdict lambda(由于缺少单词,它本身不是参数)

问题描述

嗨,我是 python defaultdict 的新手,它是可调用的参数。我有以下模拟代码。有人可以帮我理解吗?

a = 1.0
d = defaultdict(
        lambda: a,
        [(w, i) for w, i in dict_foo.items()])

如果 d[key] 当密钥不存在时会是什么样子?

标签: python

解决方案


逗号 ( ,)之后的部分不是lambda 表达式的一部分,这些元素的处理方式就像您构造了一个dict. 如文档中所述:

返回一个新的类字典对象。defaultdict 是内置 dict 类的子类。它覆盖了一种方法并添加了一个可写实例变量。其余功能与该类相同,dict此处未记录。

现在 adict可以将 2 元组的可迭代作为参数,然后将它们添加为键值对。

所以上面的内容或多或少等同于:

d = defaultdict(lambda: a)
for w, i in dict_foo.items():
    d[w] = i

鉴于dict_foo是一本字典,写起来可能更优雅:

d = defaultdict(lambda: a, dict_foo)

因此,我们在这里构造一个defaultdict与 中的项目作为键值对dict_foo,并lambda: a用作“工厂”来构造缺失键的值。


推荐阅读