Python - 匹配具有多个条件的json对象

时间:2017-03-21 17:20:48

标签: python json

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所有网址的作业ID。

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

当然它不起作用,不能想办法与网址中的每个网址互动。

1 个答案:

答案 0 :(得分:2)

你真的很接近,你实际上并没有从作业中的url对象中获取url值。试试这个:

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