首页 > 解决方案 > 在初始化期间使用其他字典值来定义字典值

问题描述

假设我有三个变量要存储在字典中,第三个是前两个的总和。初始化字典时,有没有办法在一次调用中做到这一点?例如:

myDict = {'a': 1, 'b': 2, 'c': myDict['a'] + myDict['b']}

标签: pythondictionaryinitialization

解决方案


Python>=3.8 的命名赋值允许以下内容,我猜您可以将其解释为一次调用:

>>> md = {**(md := {'a': 2, 'b': 3}), **{'c': md['a'] + md['b']}}
>>> md
{'a': 2, 'b': 3, 'c': 5}

但这实际上只是一种将两行代码强制为一行并使其可读性降低且内存效率降低(因为中间字典)的奇特方式。另请注意,mdreal 右侧的 used=可以是任何名称。

实际上,您可以提高一点效率并摆脱一个虚假的辅助字典:

(md := {'a': 2, 'b': 3}).update({'c': md['a'] + md['b']})

推荐阅读