考虑代码
a = 2
b = 3
mylist = {'a' : a, 'b' : b, 'product' : a * b}
这会生成一个包含三个字段的字典,其中第三个字段是使用第一个和第二个字段的值计算的。我正在寻找更紧凑的定义mylist
。我已经尝试过(1)
mylist = {'a' : 2, 'b' : 3, 'product' : a * b}
这给出了错误
NameError:名称“a”未定义
and (2)
mylist = {'a' : 2, 'b' : 3, 'product' : mylist['a'] * mylist['b']}
这给出了错误
NameError:名称“mylist”未定义
我想找到一个更短的形式(1)的命令,因为您不需要提及字典的名称。也许存在类似的东西currentdictionary['a']
?
在这种情况下,我会使用类似计算属性的东西。当你需要它时,它会懒惰地评估该属性;在通话时间。比将产品作为键值对进行主动管理要强大得多。
class Pair(object):
def __init__(self, a, b):
self.a = a
self.b = b
@property
def product(self):
return self.a * self.b
示例输出:
>>> Pair(2, 3).product
6
在这里使用字典是可能的,但让我觉得这是一个硬塞的解决方案,(1)您需要检查查找时是否存在键并且(2)还应该保持同步产品a
or b
change.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)