我試圖做這樣的事情中訪問字典成員:相同的字典
_dict = {"foo" : 1234,
"bar" : _dict["foo"] + 1}
不能似乎得到語法正確的,是有辦法acomplish這不使用多個詞典,或將它們定義別處?
我試圖做這樣的事情中訪問字典成員:相同的字典
_dict = {"foo" : 1234,
"bar" : _dict["foo"] + 1}
不能似乎得到語法正確的,是有辦法acomplish這不使用多個詞典,或將它們定義別處?
您不能訪問_dict
而定義它。在將它分配給_dict
之前,Python首先評估{...}
字典。換句話說,在評估{...}
字典文字陳述時,_dict
尚未定義,因此無法訪問。
而是執行此操作:
_dict = {"foo" : 1234}
_dict["bar"] = _dict["foo"] + 1
你可以從同一個變量,然後分配:
foo = 1234
_dict = {
"foo" : foo,
"bar" : foo + 1,
}
或被兩個語句(仍然是相同的字典)做到這一點:
_dict = { "foo": 1234 }
_dict["bar"] = _dict["foo"] + 1
如果你可以elab對你正在努力達成的目標有所懷疑,也許還有更優雅的解決方案可以找到。通常,當需要基於另一個值定義dict
時,這是因爲這些值是使用參數化操作動態定義的。在這些情況下,有時可以使用列表理解/生成器表達式。例如。
>>> dict((v, 1234+i) for i, v in enumerate(("foo", "bar")))
{'foo': 1234, 'bar': 1235}
無關,但它的列表理解/發電機表達式。 – jamylak
@jamylak好點。發佈編輯。 –
+1解釋爲什麼OP的版本沒有工作:) –
偉大的回答,正是我想要的,感謝您的非常快速的回覆:) – xceph