2016-11-01 11 views
1

私はPythonのリストからキーと値を取得する際に問題があります。リスト自体は、次のように構造化JSONの行数が含まれていますJSONを含むリストからキーと値を取得する

[{"values":"test","cost":"1234"},{"values":"test2","cost":"12345"}] 

問題がある、私は理想的には、元のJSONファイルの読み込み中に1つの移入のいずれかを意味するであろうと、辞書に変換したいとは思わないでしょうし、各JSONピースをリストに追加してからそのリストを辞書に追加します。しかしを

 for line in file: 
      mylist.append(json.loads(line)) 
      for line in mylist: 
       for key in line.keys(): 
        print(key) 

これは再びあるすべての罰金であり、それはそのような例として、すべてのキーを印刷し、「値」、「テスト」など:

は、私がこれを行うことにより、キーを簡単に印刷することができました私は辞書と同じようにこれを行うことによって、各の値にアクセスすることはできません。

 for line in file: 
      mylist.append(json.loads(line)) 
      for line in mylist: 
       for key,value in line.keys(): 
        print(value) 

これは「解凍するためにあまりにも多くの値を」というエラーがスローされますように、私がいないと考えられてきた簡単な解決策はありますか?私は多くの他の多くのソリューションを見てきましたが、辞書を更新して辞書を使ってキー値にアクセスするように見えますが、リストに追加しなくても各リストで辞書を更新する必要はありません。

+1

これはキーのためのもので、line.items()の値は ''キーではありません!! –

+1

'{{"値 ":"テスト "、"コスト ":" 1234 "}、{"値 ":"テスト2 "、"コスト ":" 12345 "}]'は有効です。 'json.load()'はファイルから直接反復処理するためのリストオブジェクトを与えるべきです。このリストオブジェクトには、そのリスト内の項目としてすべての個々の辞書が既に含まれています。 – roganjosh

+0

okこれらのコメントの両方が本当に助けになりました。ありがとうございます。 – D3181

答えて

2

キーと値の両方にアクセスするには、辞書の.items()メソッドを使用します。

for key, value in line.items() 

はまた、最初のケースで.keys()は、通常、その鍵を返します辞書を反復処理し、必要に応じていないことに注意してください。

for key in line: 
関連する問題