【问题标题】:How do you Print Json Object from Json Feed with Python?如何使用 Python 从 Json Feed 打印 Json 对象?
【发布时间】:2016-11-10 06:51:45
【问题描述】:

我是 python 和 Json 的新手,我有一个关于从 JSON 文件中获取值的问题。

假设我有一个用于水果的 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']

我正在使用 if 语句来查看维生素列表中是否有“C”,它是:

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

这工作正常,但现在我试图找出是否存在“C”,如果存在,则打印包含“C”的对象,在本例中为“橙色 "

所以最后我只希望代码在 JSON 文件中搜索维生素 C 并打印水果橙。

【问题讨论】:

    标签: python json search elements


    【解决方案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
    

    【讨论】:

    • 没问题!如果它有效,您可以投票并接受它!。
    • 当然!我怎样才能做到这一点?我在这里比较新:)
    • 阅读this
    【解决方案2】:
    aDict=json.loads("your json content")
    for k,v in aDict.iteritems():
        #print '%s:%s' % (k, v)
        if v['Vitamin']='C':
            print k
    

    【讨论】:

      【解决方案3】:

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

      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'])
      

      【讨论】:

      • 感谢@Burhan Khalid 的回答。我有个问题。 defaultdict(list) 中的列表是什么?另外,我不明白 for 循环。你能解释一下吗?非常感谢:)
      • defaultdict 是一种在键不存在时为字典设置默认值的方法。在此示例中,我为列表中不存在的任何键设置默认值。 for 循环就像你的一样,除了循环键之外,你同时循环键 和该键的值。这就是.items() 所做的。
      猜你喜欢
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 2021-10-15
      • 2013-06-21
      • 2013-10-20
      • 2019-05-08
      • 2017-09-30
      相关资源
      最近更新 更多