如何在Python中筛选并打印指定条件的JSON字典
解决方案
首先要明确VirusTotal v2 API返回的域名扫描结果结构:核心的引擎检测数据在scans字段下,这是一个字典(而非列表),每个键是杀毒引擎名称,对应的值是包含detected字段的字典。你之前的方法失败大概率是没正确提取scans下的检测项。
以下是两种简洁可行的实现方案:
方案1:列表推导(推荐)
先提取scans字典的所有值,再筛选出detected为True的项:
# 假设你已经获取到完整的API返回数据,存在变量vt_data中 detected_results = [engine_result for engine_result in vt_data['scans'].values() if engine_result['detected']] # 打印筛选结果 for res in detected_results: print(res)
方案2:filter() + lambda
同样先处理scans的values,再用filter过滤:
detected_results = list(filter(lambda x: x['detected'], vt_data['scans'].values())) # 打印结果 for res in detected_results: print(res)
补充:保留引擎名称的写法
如果需要同时显示对应的杀毒引擎名称,可以改用字典推导:
detected_with_engine = {engine: result for engine, result in vt_data['scans'].items() if result['detected']} print(detected_with_engine)
内容的提问来源于stack exchange,提问作者k1np3r
相关产品推荐
相关产品推荐

