2017-03-29 74 views
1

这是一个更具体的后续问题,我已经问过以前的问题。基本上,我试图从处理GET请求后收到的一段JSON文本中提取特定数据。限制到只有项目(通过使用dict.items()方法)后,我留下以下JSON数据(有一吨的它,但是这仅仅是一个样品):从Python中的JSON中嵌套字典和数组中提取特定值

[('response', 
    {'count': 84, 
    'users': [{'location_id': 123456, 
        'acx_audit': None, 
        'flash_backup_url': u'', 
        'flash_backup_url_secure': u'', 
        'flash_click_variable': None, 
        'folder': None, 
        'format': u'url-json', 
        'height': 1, 
        'id': 36619222, 
        'is_prohibited': False,}, 
      {'location_id': 5556667, 
        'acx_audit': None, 
        'flash_backup_url': u'', 
        'flash_backup_url_secure': u'', 
        'flash_click_variable': None, 
        'folder': None, 
        'format': u'url-json', 
        'height': 1, 
        'id': 4567777, 
        'is_prohibited': False,} 

数据我想拉是这些对象中的每一个'id'编号(而不是'location_id'),并把所有这些数字收集到一个数组中。虽然我不习惯使用像这样的大JSON数据结构,但是在字典和数组之间嵌套嵌套,所以我挣扎了一下。我是否还需要运行一个循环才能完成此操作?

任何帮助将不胜感激,因为我现在卡住了。谢谢。

回答

0

它可以如下进行(一些严格的条件检查是参与,以避免被引发的异常)

inp=[('response', 
    {'count': 84, 
    'users': [{'location_id': 123456, 
        'acx_audit': None, 
        'flash_backup_url': u'', 
        'flash_backup_url_secure': u'', 
        'flash_click_variable': None, 
        'folder': None, 
        'format': u'url-json', 
        'height': 1, 
        'id': 36619222, 
        'is_prohibited': False}, 
      {'location_id': 5556667, 
        'acx_audit': None, 
        'flash_backup_url': u'', 
        'flash_backup_url_secure': u'', 
        'flash_click_variable': None, 
        'folder': None, 
        'format': u'url-json', 
        'height': 1, 
        'id': 4567777, 
        'is_prohibited': False}, 
       {'location_id': 5556667, 
        'acx_audit': None, 
        'flash_backup_url': u'', 
        'flash_backup_url_secure': u'', 
        'flash_click_variable': None, 
        'folder': None, 
        'format': u'url-json', 
        'height': 1, 
        'id': 4567777, 
        'is_prohibited': False}, 
      {'location_id': 5556667, 
        'acx_audit': None, 
        'flash_backup_url': u'', 
        'flash_backup_url_secure': u'', 
        'flash_click_variable': None, 
        'folder': None, 
        'format': u'url-json', 
        'height': 1, 
        'id': 4567777, 
        'is_prohibited': False}]})] 
output=[] 
for tup_el in inp: 
    for el in tup_el: 
     if type(el) is dict: 
      if "users" in el.keys(): 
       if type(el["users"]) is list: 
        for obj in el["users"]: 
         if "id" in obj.keys(): 
          output.append(obj['id']) 
print output 
+0

谢谢@repzero,这个完美的作品。因此,如果我正确理解这一点,这段代码就会通过json运行并检查它是否是列表,字典,键,然后在找到'id'之后,它会将每个ID添加到数组中(这是输出)。我有这个正确吗? – user7681184

+0

是的..这是否....如果它真的适合你,随时接受解决方案 – repzero

相关问题