如何用单条语句创建含依赖值的Python字典?避免预引用报错
如何用单语句创建包含依赖值的字典
当然可以实现!你之前的写法报错是因为当定义total的时候,my_dict还没有完成初始化——Python在执行字典字面量的过程中,变量my_dict还没被赋值,自然没法引用它的键。下面给你几种可行的单语句解决方案:
方法1:使用海象运算符(Python 3.8+)
这是最优雅的方式,利用海象运算符:=先完成部分字典的初始化,再扩展出依赖值:
my_dict = (temp := {'quantity': 10}) | {'total': temp['quantity'] * 20}
或者更紧凑的写法:
my_dict = {'quantity': 10, 'total': (my_dict := {'quantity': 10})['quantity'] * 20}
执行后就能得到预期的字典:{'quantity': 10, 'total': 200}
方法2:借助临时变量(兼容所有Python版本)
如果你的Python版本低于3.8,没法用海象运算符,可以把公共值先存到临时变量里,写成一行语句:
q = 10; my_dict = {'quantity': q, 'total': q * 20}
这里用分号把两行逻辑合并成一行,既满足单语句的要求,又避免了未定义变量的问题。
为什么你的原写法会报错?
回顾你尝试的代码:
my_dict = {'quantity': 10, 'total': my_dict['quantity'] * 20}
Python在解析这个字典字面量时,会先计算所有值的表达式。当计算my_dict['quantity']时,my_dict还没有被赋值(整个字典还在创建中),所以会抛出NameError,提示变量my_dict未定义。
内容的提问来源于stack exchange,提问作者martonbognar
相关产品推荐
相关产品推荐

