2013-12-02 3 views
0

Я пытаюсь улучшить свое кодирование с помощью словарей.Методы внутри словаря недоступны для ссылки self

У меня есть один с входами и один с выходами. Проблема в том, что кажется, что я не могу ссылаться на словарь внутри указанного словаря.

def calculate(x,y): 
    return x + y 

inputs = dict(
       a = 1, 
       b = 2, 
       c = 3, 
      ) 

outputs = dict(
       d = calculate(inputs['a'], inputs['b']), 
       e = calculate(inputs['a'], outputs['d']), 
      ) 

e создает проблемы. NameError: name 'outputs' is not defined

Должен ли я использовать здесь некоторые виды?

Бонус вопрос:

У меня есть около 30 входов и 20 выходов расчетов. Вы рекомендуете другой способ решения этого, чем тот, который у меня есть?

ответ

2

Пара точек здесь:

  • Проверьте кронштейны (например, последние две строки с calculate(...))
  • outputs не определен при доступе к нему с outputs['d'] (последней строки см ответ javo в)
  • I не видят преимущества dicts по переменным в этом сценарии

Краткая история:

def add(x,y): 
    return x + y 

a = 1 
b = 2 
c = 3 

d = add(a, b) 
e = add(a, d) 
+0

О, хорошо. Я могу жить с этим. Спасибо :) Я хочу использовать dicts, потому что позже я пройду через контейнер и напишу выходной файл. В общей сложности у меня может быть около 50 переменных. – tore

+0

С 50 переменными это, вероятно, отличная история. Что именно вы пытаетесь? (Может быть, вы можете использовать списки?) – Matt

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