我想在python dict中添加一个键/值,它是现有键/值的依赖项。实施例
x = {}
x["length"] = 12
x["volume"] =x["lenght"] * 10
有效;但是有可能以某种方式做到这一点(类似于那个,但那个不起作用):
xx ={"length":12, "volume": xx["length"] *10}
非常感谢您的帮助
答案 0 :(得分:2)
xx ={"length":12, "volume": xx["length"] *10}
这不起作用,因为未定义xx并且您在定义完成之前尝试访问它。记住python是逐行执行的。所以这一行试图立即执行。
答案 1 :(得分:2)
是的,你可以......
class mydict(dict):
def __missing__(self, key):
if key == 'volume':
self[key] = vol = self['length'] * 10
return vol
raise KeyError(key)
md = mydict(length=12)
print('volume:', md['volume'])
print('length:', md['length'])
print('other:', md['other'])
输出:
volume: 120
length: 12
Traceback (most recent call last):
File "./hola.py", line 37, in <module>
print('other:', md['other'])
File "./hola.py", line 31, in __missing__
raise KeyError(key) # to raise an Exception
KeyError: 'other'
唯一的缺点是你不能使用{}
表示法,但你仍然有dict
(它的子类)而不是用户定义的类。不是100%你想要的,但应该做的。