第一次发帖,玩得开心!
我有一个关于 Python 字典的相当基本的问题。我希望有一些 dict 值在另一个变量更改时更新(或者至少在下次调用时重新计算) - 例如:
mass = 1.0
volume = 0.5
mydict = {'mass':mass,'volume':volume}
mydict['density'] = mydict['mass']/mydict['volume']
所以在这种情况下,mydict['density'] 只返回 2.0。如果我更改 mydict['mass'] = 2.0,密度将不会更新。很好 - 我有点理解为什么 - 密度由传递给声明时的值定义。所以我想也许我可以用 lambda 表达式来解决这个问题,例如(为可怕的代码道歉!):
mydict['density_calc'] = lambda x,y: x/y
mydict['density'] = mydict['density_calc'](mydict['mass'],mydict['volume'])
但同样,尽管更改了 mydict['mass'],这只会返回原始密度。作为最后的尝试,我尝试了这个:
def density(mass,volume): return mass/volume
mydict['density_calc'] = lambda x,y: density(x,y)
mydict['density'] = mydict['density_calc'](mydict['mass'],mydict['volume'])
同样,没有骰子。这似乎是一个解决起来非常简单的问题,所以提前致歉,但如果有人能帮助我,我将不胜感激!
干杯,
戴夫
请您参考如下方法:
似乎是在滥用字典结构。为什么不创建一个简单的类?
class Entity(object):
def __init__(self, mass, volume):
self.mass = mass
self.volume = volume
def _density(self):
return self.mass / self.volume
density = property(_density)
