4

私はこのようなことをしようとしています:

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

複数の辞書を使用したり、他の場所で定義したりせずにこれを達成する方法はありますか?

4

2 に答える 2

13

定義_dict はアクセスできません。Python は、最初に{...}dict リテラルを評価してから に割り当て_dictます。つまり、{...}dict リテラル ステートメントの評価中_dictは、まだ定義されていないため、アクセスできません。

代わりにこれを行います:

_dict = {"foo" : 1234}
_dict["bar"] = _dict["foo"] + 1
于 2012-09-25T09:15:33.983 に答える
9

次に、同じ変数から割り当てることができます。

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

または、2つのステートメントでそれを行います(それでも同じdict):

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

あなたが達成しようとしていることを詳しく説明することができれば、おそらくもっとエレガントな解決策が見つかるでしょう。多くの場合、ある人がdict別の人に基づいて値を定義する必要があるのは、パラメータ化された操作を使用して値が動的に定義されるためです。そのような場合、リスト内包表記/ジェネレータ式を使用できる場合があります。例えば

>>> dict((v, 1234+i) for i, v in enumerate(("foo", "bar")))
{'foo': 1234, 'bar': 1235}
于 2012-09-25T09:16:46.563 に答える