如何从Python的Json Feed打印Json对象?

问题描述:

我是python和Json的新手,我有一个关于从JSON文件获取值的问题。如何从Python的Json Feed打印Json对象?

比方说,我有水果JSON饲料,如下面的一个:具有维生素元素“C”

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

比方说,我要打印的对象(在这种情况下,水果)

我使用加载JSON文件:

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

,我存储维生素元件在一个变量中,像这样:

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

我if语句使用,看看是否“C”中的维生素的列表可以,它是:

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

这是工作正常,但现在我想找到就看到如果存在“C”,并且如果存在,则打印容纳“C”的对象,在这种情况下,“橙色

因此,最终我只想要代码搜索JSON文件中的维生素C并打印水果橙。

你只需要建立一个 “反向” 树:

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

感谢@Burhan哈立德你的答案。我有个问题。什么是defaultdict(列表)中的列表?另外,我不明白for循环。你能解释一下吗?非常感谢:) –

+0

'defaultdict'是一种为字典设置默认值的方法,如果一个键不存在的话。在这个例子中,我为任何不存在列表的键设置了默认值。 for循环与您的循环一样,除了循环使用键之外,您还在同一时间循环键_和该键的值。这就是'.items()'所做的。 –

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

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

当然!我怎样才能做到这一点?我在这里相对较新:) –