私はこのようなことをしようとしています:
_dict = {"foo" : 1234,
"bar" : _dict["foo"] + 1}
複数の辞書を使用したり、他の場所で定義したりせずにこれを達成する方法はありますか?
私はこのようなことをしようとしています:
_dict = {"foo" : 1234,
"bar" : _dict["foo"] + 1}
複数の辞書を使用したり、他の場所で定義したりせずにこれを達成する方法はありますか?
定義_dict
中はアクセスできません。Python は、最初に{...}
dict リテラルを評価してから に割り当て_dict
ます。つまり、{...}
dict リテラル ステートメントの評価中_dict
は、まだ定義されていないため、アクセスできません。
代わりにこれを行います:
_dict = {"foo" : 1234}
_dict["bar"] = _dict["foo"] + 1
次に、同じ変数から割り当てることができます。
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}