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