Python 2迭代嵌套的json字典

时间:2016-11-30 03:04:54

标签: json python-2.7

我有一个源自Elasticsearch中带有JSON的文档的dict,如下所示:

{  
   u'hits':{  
      u'hits':[  
         {  
            u'_score':1.0,
            u'_type':u'input',
            u'_id':u'1',
            u'_source':{  
               u'message':u'I really love fake news tho.'
            },
            u'_index':u'gossip'
         }
      ],
      u'total':1,
      u'max_score':1.0
   },
   u'_shards':{  
      u'successful':1,
      u'failed':0,
      u'total':1
   },
   u'took':3,
   u'timed_out':False
}

有几千个文档,我希望得到每个'消息'值的列表。我尝试了几种方法,但似乎无法获得有效的解决方案。我目前的尝试是:

messages = es.search(index="gossip", _source=['message'])
for key, value in messages.iteritems():
    print key, value

导致:

hits{  
   u'hits':[  
      {  
         u'_score':1.0,
         u'_type':u'input',
         u'_id':u'1',
         u'_source':{  
            u'message':u'I really love fake news tho.'
         },
         u'_index':u'gossip'
      }
   ],
   u'total':1,
   u'max_score':1.0
}_shards{  
   u'successful':1,
   u'failed':0,
   u'total':1
}

希望有人能够朝着正确的方向推动我。

1 个答案:

答案 0 :(得分:0)

试试这个 -

es_res = {  
   u'hits':{  
      u'hits':[  
         {  
            u'_score':1.0,
            u'_type':u'input',
            u'_id':u'1',
            u'_source':{  
               u'message':u'I really love fake news tho.'
            },
            u'_index':u'gossip'
         }
      ],
      u'total':1,
      u'max_score':1.0
   },
   u'_shards':{  
      u'successful':1,
      u'failed':0,
      u'total':1
   },
   u'took':3,
   u'timed_out':False
}

print [ i['_source']['message'] for i in es_res['hits']['hits']]