2017-03-29 102 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

相關問題