gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:57 25 4
gpt4 key购买 nike

第一次发帖,玩得开心!

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

关于Python:在字典中将变量链接/绑定(bind)在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1055410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com