我正在尝试做这样的事情:
_dict = {"foo" : 1234,
"bar" : _dict["foo"] + 1}
似乎无法正确使用语法,有没有办法在不使用多个词典或在其他地方定义它们的情况下完成此操作?
答案 0 :(得分:13)
在定义时,您无法访问_dict
。 Python首先评估{...}
dict文字,然后再将其分配给_dict
。换句话说,在评估{...}
dict文字语句时,_dict
尚未定义,因此无法访问。
请改为:
_dict = {"foo" : 1234}
_dict["bar"] = _dict["foo"] + 1
答案 1 :(得分:9)
您可以从同一个var:
分配foo = 1234
_dict = {
"foo" : foo,
"bar" : foo + 1,
}
或者用两个陈述(仍然是相同的词典)来做:
_dict = { "foo": 1234 }
_dict["bar"] = _dict["foo"] + 1
如果你能详细说明你想要实现的目标,也许可以找到更优雅的解决方案。通常,当需要基于另一个定义dict
值时,这是因为使用参数化操作动态定义值。在这些情况下,有时可以使用列表理解/生成器表达式。 E.g。
>>> dict((v, 1234+i) for i, v in enumerate(("foo", "bar")))
{'foo': 1234, 'bar': 1235}