Skip to main content
 首页 » 编程设计

Python:在字典中将变量链接/绑定(bind)在一起

2025年05月04日13www_RR

第一次发帖,玩得开心!

我有一个关于 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)