2016-05-19 3 views
0

にリストを値として設定します。私は、最大/最小値を持っているが、私は成功したような方法で辞書を作成するトラブルを抱えています:ここで Pythonは:私はmaxと各列の最小値を格納するための辞書を作成しようとしています</p> <pre><code>column_names = ['','column1', 'column2', 'column3'] </code></pre> <p>:私は、列タイトルのリストを持っている辞書

{ 
     'csvfile1' :[{ 

      "column1": [{ 
       "max": "154790" 
       "min": "134070" 
       }], 
      "column2": [{ 
       "max": "148686" 
       "min": "125753" 
       }], 
      "column3": [{ 
       "max": "80591" 
       "min": "40644" 
       }] 
      }] 
    } 

は、これまでの私のスクリプトです:

max_min_data={} 
    max_min_data['name'] = defaultdict(column_names[1:]) 

    for number in range(1,3): 

     max_min_data[name][column_names[number]]['max']=max_value 
     max_min_data[name][column_names[number]]['min']=min_value 

これではありません私のために働いて、できました誰かがなぜ、または私が上記の構造を作るために何をすべきか説明していますか?

私はエラーを取得する:

KeyError: 'column1' 

私が以前に試してみました:

max_min_data='name' 
for number in range(1,3): 
    max_min_data[name]=[column_names[number]] 
をしかし、これが唯一の 'COLUMN3' ではない、すべての3カラム名あたりとして

+2

"何らかの理由で働かない"というより、何が起こるか教えてください。私は 'defaultdict(column_names [1:])'にエラーがあると推測します。 –

+0

なぜあなたの 'dict'を単一要素リストに入れていますか? –

答えて

2

、perlのautovivification機能をimplementaingことで、ネストされた辞書を使用し

class AutoVivification(dict): 
    """Implementation of perl's autovivification feature.""" 
    def __getitem__(self, item): 
     try: 
      return dict.__getitem__(self, item) 
     except KeyError: 
      value = self[item] = type(self)() 
      return value​ 

# Store data 
max_min_data = AutoVivification() 
for number in range(1,3): 
    max_min_data[name][column_names[number]]['max']=max_value 
    max_min_data[name][column_names[number]]['min']=min_value 
+0

ありがとうございます。 "SyntaxError:22行目のファイルmy_file.pyに非ASCII文字 '\ xe2'が含まれていますが、エンコーディングは宣言されていません; http://python.org/dev/peps/pep- 0263/for details」を参照してください。 22行目はAutoVivificationクラス – Catherine

+0

@キャサリンの戻り値の部分と一致しますが、このエラーは自分のコードでは発生しません。 Pythonファイルに '# - * - coding:utf-8 - * - 'という行を追加してください。 – SparkAndShine

+0

ありがとう!この辞書に追加する方法はありますか?私はループしている約4つの "名前"を持っていますが、これはそれ自身を書き直すように見えるので、最後のものだけが辞書に残ります。 AutoVivificationには属性 'append'がありません – Catherine

0

のキーを与えましたhttps://docs.python.org/2/tutorial/datastructures.html

辞書キーを作成するには、次の操作を行う必要があります。

辞書[キー] =値

あなたは辞書[キー1]を行うことはできません[キー2] [KEY3] =値に加えて

、私はあなたの辞書が表示されていないと宣言

辞書= {}

関連する問題