【问题标题】:Accessing a dictionary member within the same dictionary访问同一字典中的字典成员
【发布时间】:2012-09-25 09:13:23
【问题描述】:

我正在尝试做这样的事情:

_dict = {"foo" : 1234,
         "bar" : _dict["foo"] + 1}

似乎无法获得正确的语法,有没有办法在不使用多个字典或在其他地方定义它们的情况下完成这个?

【问题讨论】:

    标签: python syntax dictionary


    【解决方案1】:

    您无法访问_dict 同时定义它。 Python 首先评估 {...} dict 文字,然后将其分配给 _dict。换句话说,在评估 {...} dict 文字语句时,_dict 尚未定义,因此无法访问。

    改为这样做:

    _dict = {"foo" : 1234}
    _dict["bar"] = _dict["foo"] + 1
    

    【讨论】:

    • 很好的答案,正是我想要的,感谢您非常快速的回复:)
    【解决方案2】:

    您可以从同一个 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}
    

    【讨论】:

    • 不相关,但它是列表理解/生成器表达式。
    猜你喜欢
    • 2011-01-22
    • 2020-01-16
    • 2020-01-09
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 2021-09-20
    • 2022-01-25
    相关资源
    最近更新 更多