2017-03-21 65 views
0
urls = ['http://google.com', 'http://yandex.com'] 

jobs = { 
    "jobs": [{ 
     "id": "4535765", 
     "urls": [{ 
      "url": "http://google.com", 
      "status": "OK" 
     }, { 
      "url": "http://yandex.com", 
      "status": "OK" 
     }] 
    }, { 
     "id": "4535756", 
     "urls": [{ 
      "url": "http://example.com", 
      "status": "OK" 
     }, { 
      "url": "http://google.it", 
      "status": "OK" 
     }] 
    }] 
} 

我需要匹配具有作爲url所有url的url的作業id。Python - 匹配具有多個條件的json對象

job_id = [j['id'] for j in jobs['jobs'] if all(u in jobs['urls'] for u in urls)] 

當然,它不工作,不能想辦法與URL中的每個URL進行交互的方式。

+0

這是獨立的JSON;你只需要一個Python'dict'。 – chepner

回答

2

你真的很接近,你實際上並沒有從作業中的url對象中獲取url值。試試這個:

job_ids = [j['id'] for j in jobs['jobs'] if all(u['url'] in urls for u in j['urls'])]