первый пост, так что играйте хорошо!
У меня довольно простой вопрос о словарях 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, плотность не будет обновлена. Хорошо - я могу понять почему - плотность определяется значениями, когда они были переданы в декларацию. Поэтому я подумал, что, возможно, я мог бы подойти к этому с помощью лямбда-выражения, например (извинения за ужасный код!):
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'])
Опять не игра в кости. Это кажется очень простой проблемой, поэтому извиняюсь заранее, но если кто-нибудь сможет мне помочь, я буду очень признателен!
Приветствия
Dave