2015-02-06 3 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]' if 'gui_names' - это словарь – ZdaR

+0

@Anmol_uppal Нет его функции, возвращающей кортеж« gui ids ». Передаваемые мне данные находятся в более странном формате, поэтому я конвертирую его в нечто более полезное. – Baz

+0

См., Например, https://docs.python.org/2/tutorial/datastructures.html#nested-list-comprehensions – jonrsharpe

ответ

3

Давайте преобразуем его в цикл (Список постижений в основном быстрее, более удобным для чтения для петель) :

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

ошибка довольно сейчас очевидно

Edit: Для того, чтобы это исправить, изменить цикл для этого:

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

Я думаю, что это дает тот же результат, я не проверял, хотя.

+0

Да, теперь я понимаю проблему! Спасибо за вашу помощь. – Baz

Смежные вопросы