python - 带有两个参数的 defaultdict lambda(由于缺少单词,它本身不是参数)
问题描述
嗨,我是 python defaultdict 的新手,它是可调用的参数。我有以下模拟代码。有人可以帮我理解吗?
a = 1.0
d = defaultdict(
lambda: a,
[(w, i) for w, i in dict_foo.items()])
如果 d[key] 当密钥不存在时会是什么样子?
解决方案
逗号 ( ,
)之后的部分不是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
用作“工厂”来构造缺失键的值。
推荐阅读
- google-apps-script - 如何停止 Google 表格中同时触发/冲突的功能?
- typescript - 如何将具有计算属性的对象转换为类型?
- php - 如何使用授权令牌(承载)在 laravel-8 中重置密码?
- logstash - 来自行的 Grok 模式 - 自定义日期
- sql - 在 PostgreSQL 中按“最快”对带有“timestamptz”的行进行排序
- amazon-web-services - ECS awsvpc 容器无法访问
- mysql - 如何使用 chrome 扩展名执行 SQL 数据库?
- android - 插件不能有不同的 kotlin 版本?无法初始化类 org.jetbrains.kotlin.gradle.internal.KotlinSourceSetProviderImplKt
- excel - 在使用 vba 将数据粘贴到外部 Excel 文件之前,如何取消对它的保护?
- python - Memoization Python Dash: TypeError: expected str, bytes or os.PathLike object, not Flask