访问同一字典中的字典成员

xce*_*eph 4 python syntax dictionary

我想做这样的事情:

_dict = {"foo" : 1234,
         "bar" : _dict["foo"] + 1}
Run Code Online (Sandbox Code Playgroud)

似乎没有正确的语法,有没有办法在不使用多个词典或在别处定义它们的情况下完成这个?

Mar*_*ers 13

您不能访问_dict ,同时定义它.Python首先{...}在分配它之前评估dict文字_dict.换句话说,在评估{...}dict文字语句时,_dict尚未定义,因此无法访问.

改为:

_dict = {"foo" : 1234}
_dict["bar"] = _dict["foo"] + 1
Run Code Online (Sandbox Code Playgroud)


Sha*_*hin 9

你可以从同一个var中分配:

foo = 1234
_dict = {
  "foo" : foo,
  "bar" : foo + 1,
}
Run Code Online (Sandbox Code Playgroud)

或者用两个语句(仍然是相同的词典)来做:

_dict = { "foo": 1234 }
_dict["bar"] = _dict["foo"] + 1
Run Code Online (Sandbox Code Playgroud)

如果你能详细说明你想要实现的目标,也许可以找到更优雅的解决方案.通常,当需要dict基于另一个定义值时,这是因为使用参数化操作动态地定义值.在这些情况下,有时可以使用列表理解/生成器表达式.例如

>>> dict((v, 1234+i) for i, v in enumerate(("foo", "bar")))
{'foo': 1234, 'bar': 1235}
Run Code Online (Sandbox Code Playgroud)