2016-12-04 4 views
0

この辞書の初期化によって "NameError:statearray is not defined"が生成されます。"KeyError: 'word'"または "NameError:<辞書の名前>"

for state in mystates: 

    statearray[state.abbrev()]={} 

    statearray[state.abbrev()]['count'] = 0 
    statearray[state.abbrev()]['total score'] = 0 
    statearray[state.abbrev()]['avg'] = statearray[state.abbrev()]['count']/statearray[state.abbrev()]['total score' 

この辞書初期化では、ワイオミング州の「KeyError: 'WA'」が生成されます。

私はこのベース値を持つすべての50件の州を初期化する必要がありますが、私はまだ入力されていないキーを言及するためのエラーを取得するか、まだ存在していない辞書を使用するためのエラーが出るのいずれか
for state in mystates: 

    statearray={} 

    statearray[state.abbrev()]['count'] = 0 
    statearray[state.abbrev()]['total score'] = 0 
    statearray[state.abbrev()]['avg'] = statearray[state.abbrev()]['count']/statearray[state.abbrev()]['total score' 

。これは簡単に修正できますか?

+2

このコードを試すには、辞書の定義 'statearray = {}' 'for'ループの外側か、' state.abbrev'と '状態との間の差が何であるか、各ステップ – Julien

+0

で空にBAKを設定さを置きます。略語() '? – Chinny84

+0

私はforloopの外に配列を移動し、今はKeyError 'WA'を取得しています。また、かっこが必要なので、state.abbrevにin()を追加しました – grilam14

答えて

0

要素を定義することはできません。

# define object 
statearray = {} 

for state in mystates: 

    # define state.abbrev array, and elements 
    statearray[state.abbrev] = { 
     'count': 0, 
     'total score': 0, 
    } 

    # this element references elements in statearray[state.abbrev] 
    # so it must be defined after 
    statearray['avg'] = statearray[state.abbrev()]['count']/statearray[state.abbrev()]['total score'] 
関連する問題