2015-02-06 61 views
1

下面的代碼之前引用局部變量給我:local variable 'param' referenced before assignment列表綜合:分配

value_per_label = [(label, value) \ 
        for label, value in zip(gui_names(param),values) \ 
        for (param, values) in parameters] 

我在做什麼錯?

參數如下:

parameters = [("A", (1,3,5)), ("B", (2,3,4))] 

,我希望把它轉換爲:

value_per_label = [("A_min", 1), ("A_current", 3), ("A_max", 5), ("B_min", 2), ("B_current", 3), ("BA_max", 4)] 
+0

'gui_names [param]'如果'gui_names'是一本字典 – ZdaR 2015-02-06 08:32:17

+0

@Anmol_uppal沒有它的函數返回一個「gui ids」的元組。傳遞給我的數據格式很奇怪,所以我將它轉換爲更有用的東西。 – Baz 2015-02-06 08:33:11

+0

參見例如https://docs.python.org/2/tutorial/datastructures.html#nested-list-comprehensions – jonrsharpe 2015-02-06 08:34:23

回答

3

讓我們將它轉​​換成一個for循環(List內涵基本上是更快,更可讀的for循環) :

value_per_label = [] 
for label, value in zip(gui_names(param), values): 
    for (param, values) in parameters: 
      value_per_label.append((label, value)) 

錯誤現在很明顯

編輯:要解決這個問題,for循環改變這樣:

value_per_label = [(value, label) 
        for (param, values) in parameters \ 
        for (label, value) in zip(gui_names(param), values)] 

我覺得這給了相同的結果,我沒有,雖然測試。

+0

現在我明白了這個問題!謝謝你的幫助。 – Baz 2015-02-06 08:49:21