你好!问题:我想知道如何使用列表理解来根据 python 列表中的单词过滤掉某些结果,或者以其他方式从列表中仅提取我需要的包含某个“关键字”的行。概述:我正在使用 python 向 api 发出请求并收到了 json 请求。我已经使用 json.loads() 转换了 json,现在有一个我正在尝试使用的嵌套 python 列表:{"results": [ { **"id": 12345678,** "applicant": { "id": 11342542, "first_name": "Mary", "last_name": "Johnson", "email": "mjohnson@example.org" }, "average_score": 42.0, "collaborators": [], "created_at": "2020-06-02T*****", "current_stage": { "id": 5057743, "title": "Reviewing" }, "custom_fields": [], "decision": null, **"labels": [{ "id": 1124354, "name": "Jerusalem" }, { "id": 132456, "name": "Testing Stuff" }],** "notes": [ { "id": 536590, "author": { "id": 3342356287, "first_name": "Brett", "last_name": "Wallace", "email": "bwallace@example.com" },我可以使用以下代码仅提取我需要的字段:for application in r['results']: print(application['id'],application['labels'])我得到的东西看起来像这样:18318202 [{'id': 109135, 'name': 'Jerusalem'}, {'id': 109198, 'name': 'Testing Stuff'}] 11233443 [{'id': 109135, 'name': 'Nazareth'}, {'id': 109198, 'name': 'Age Requirement'}]有没有办法让我只返回 ['labels'] 字段中带有“Jerusalem”的值?换句话说,查看上面的示例,它只会返回第一行,因为第二行不包含耶路撒冷一词。我可以从数据中过滤此信息(条件打印语句)或将其提取到新列表中,但我无法弄清楚如何仅获取其中包含“耶路撒冷”的值。我找到的所有资源都讨论了如何加载和转换数据,但事后没有过滤掉。提前感谢任何人的时间和支持!
1 回答
温温酱
TA贡献1752条经验 获得超4个赞
filtered_data = [(application['id'], application['labels']) for application in r['results'] if 'Jerusalem' in (item['name'] for item in application['labels'])]
也许这也会起作用
filtered_data = [(application['id'], application['labels']) for application in r['results'] if application['labels'][0]['name'] == 'Jerusalem']
添加回答
举报
0/150
提交
取消