2016-11-10 9 views
0

私はPythonとJsonの新機能ですが、JSONファイルから値を取得することに関して質問があります。JsonフィードをPythonでどのように印刷しますか?

のは、私は下記のような果物のためのJSONフィードを持っているとしましょう:

{ 
    "Banana": { 
    Vitamin: "A", 
}, 
"Apple": { 
    Vitamin: "B", 
}, 
"Orange": { 
    Vitamin: "C", 
    }, 
} 

ビタミン要素「C」

を持っていること(この場合は果物)のは、私は、オブジェクトを印刷したいとしましょう

私が使用してJSONファイルをロードしています:

import utils 
    fruits= utils.load_json('feed.json') 

を、私はそうのような変数にビタミン要素を格納しています:

 for fruit in fruits: 
      list_of_vitamins= fruits[fruit]['Vitamin'] 

文の場合、私は、「C」はビタミンのリストで利用可能で、それがあるかどうかを確認するために使用しています:

 if ("C" in list_of_vitamins): 
      print "yes" 

これが正常に動作しているが、今私が見てすぐ見つけるしようとしています"C"が存在する場合は、 "C"を保持するオブジェクトを印刷します。この場合、 "オレンジ"

最後にJSONファイルを検索してビタミンCフルーツオレンジを印刷します。

答えて

0

あなただけの木を "逆転" を構築する必要があります:あなたの答えのためのハリド@Burhan

from collections import defaultdict 

fruits_by_vitamin = defaultdict(list) # if a key doesn't exist, set it to an 
             # empty list 

for fruit,data in fruits.items(): # on Python2, use iteritems() 
    fruits_by_vitamin[data['Vitamin']].append(fruit) 

print(fruits_by_vitamin['C']) 
+0

感謝を。質問があります。 defaultdict(list)のリストは何ですか?また、私はforループを理解できませんでした。それを説明していただけますか?ありがとうございます:) –

+0

'defaultdict'はキーが存在しない場合に辞書のデフォルト値を設定する方法です。この例では、リストに存在しないキーのデフォルト値を設定しています。 forループはあなたのものと似ていますが、キーをループするのではなく、同時にキー_とその値をループしています。それは '.items()'がするものです。 –

0
aDict=json.loads("your json content") 
for k,v in aDict.iteritems(): 
    #print '%s:%s' % (k, v) 
    if v['Vitamin']='C': 
     print k 
1
import json 

fruits_json= json.load(open('feed.json')) 
print fruits_json 

for fruit in fruits_json: 
    if fruits_json[fruit]["Vitamin"] == "C": 
    print fruit 
+0

これは完全に機能しました!おかげでたくさん:) –

+0

問題はありません!それがうまくいくなら、あなたはアップホートしてそれを受け入れることができます! –

+0

どうやってやるの?私はここで比較的新しいです:) –

関連する問題