2016-01-18 29 views
2

我將如何解決這個問題?值按照相同的詞典另一個值設置,蟒蛇

d = { 
'a':3, 
'b':(d['a']*3) 
} 

print(d) 

導致一個錯誤,因爲我嘗試設置使用字典的名稱「B」的價值,顯然Python並不喜歡這樣。我將如何解決這個問題?

另外:

l = [[2], [(l[0][0]*2)]] 

print(l) 

有同樣的問題。

+1

鑑於分配如何工作 - 在RHS表達式第一eval'd,只有到那時是綁定到LHS得到的對象 - ,這是可以預料到:你不能引用名稱尚未在當前範圍內創建。 –

+0

您可以發表評論作爲回答請 – Emlingur

+0

完成後,您可以立即刪除自己的轉發。 –

回答

4

鑑於分配如何工作 - 在RHS表達式第一eval'd,只有到那時是綁定到LHS得到的對象 - ,這是可以預料的:您無法引用尚未在當前範圍內創建的名稱。

的解決方案,要麼使用您要重用值的中間變量,如蘭博的答案解釋,或先與第一鍵或索引/值對構建dict(或list或其他)再建另一方面,即:

d = {"a", 3} 
d["b"] = d["a"] * 3 
2

首先將值賦給變量:

x = 3 
d = {'a': x, 'b': x*3} 

y = 2 
l = [[y], [y*2]] 
+1

這肯定會起作用,但這只是整個代碼的一個微縮版本,我不認爲數百個變量是整齊的,如果我將它作爲變量,反正我不需要列表。 – Emlingur