Python Dict:条目依赖于现有条目

时间:2016-03-08 15:18:52

标签: python dictionary

我想在python dict中添加一个键/值,它是现有键/值的依赖项。实施例

x = {}
x["length"] = 12
x["volume"] =x["lenght"] * 10

有效;但是有可能以某种方式做到这一点(类似于那个,但那个不起作用):

xx ={"length":12, "volume": xx["length"] *10}

非常感谢您的帮助

2 个答案:

答案 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%你想要的,但应该做的。