python - 在初始化期间使用其他字典值来定义字典值
问题描述
假设我有三个变量要存储在字典中,第三个是前两个的总和。初始化字典时,有没有办法在一次调用中做到这一点?例如:
myDict = {'a': 1, 'b': 2, 'c': myDict['a'] + myDict['b']}
解决方案
Python>=3.8 的命名赋值允许以下内容,我猜您可以将其解释为一次调用:
>>> md = {**(md := {'a': 2, 'b': 3}), **{'c': md['a'] + md['b']}}
>>> md
{'a': 2, 'b': 3, 'c': 5}
但这实际上只是一种将两行代码强制为一行并使其可读性降低且内存效率降低(因为中间字典)的奇特方式。另请注意,md
real 右侧的 used=
可以是任何名称。
实际上,您可以提高一点效率并摆脱一个虚假的辅助字典:
(md := {'a': 2, 'b': 3}).update({'c': md['a'] + md['b']})
推荐阅读
- python - 从 docker build -f Dockerfile -t k8s-hub:0.8.2 创建时,k8s-hub 映像无效
- javascript - Node js / javascript承诺不等待完成sequelize查询
- c - GCC 定位独立代码:变量未正确加载
- c - 函数 pthread_join 的代码 - Pthread 库
- javascript - 在弹出模板的标题中添加 innerHTML (arcgis-js-api 4.xx)
- node.js - 是否可以在 nuxt serverMiddleware 中使用打字稿?
- javascript - 如何使用反应“链接”标签下载文件?
- node.js - nodejs服务器上的bcrypt非常慢
- symfony - 带有 API 平台的 symfony 5 中的子资源路由
- python - 从字符串中提取正则表达式模式