python - 字典理解中是否允许使用 lambda?
问题描述
我有以下内容:
>>> {c: (lambda: c) for c in ["A","B"]}["A"]()
'B'
当我期望结果是'A'
.
注意
>>> {c: c for c in ["A","B"]}["A"]
'A'
字典理解中不允许使用 lambda,还是我搞砸了语法?
解决方案
lambda 创建了一个对象,它捕获的值在理解的每个元素期间都被修改
就像你做的一样
class Lambda:
def set(self, value):
self.value = value;
return self
def __call__(self):
return value
lam = Lambda()
{c: lam.set(c) for c in ["A","B"]}["A"]()
字典中的每个条目都具有相同的值lam
,即返回最后一个set
值。
推荐阅读
- file - 如果目录中存在同名文件,则从桌面删除所有文件
- android - 为什么小部件中不支持自定义视图?
- azure - Azure Function App - 发布失败
- antd - 如何使用时间选择器禁用过去的时间
- android - 共享 ViewModel 以帮助 Fragment 和父 Activity 之间的通信
- css - 我在 SCSS 文件中导入常规 CSS 文件,但是?
- java - 构建签名 APK 时出错
- three.js - 在 Autodesk forge 中使用 THREE.PointCloud 创建的各个点的工具提示
- django - django rest框架保存M2M关系
- visual-studio-code - 如何修复 vsce 不将代码更改打包到 .vsix 文件中