Python如何从mygene接口返回的JSON结果中提取所有_id字段值
实现提取返回结果中所有
_id字段的方法 你现有代码调用接口后返回的是由字典构成的列表,每个字典元素都包含_id字段,直接通过列表推导式遍历取值即可,不需要额外依赖。
方式1:保留原函数,调用后单独提取
import requests def geneinfo(gene): url = 'http://mygene.info/v3/query?q='+gene r = requests.get(url) return r.json()['hits'] # 拿到查询结果的hits列表 hits_result = geneinfo('cdk2') # 遍历提取所有_id id_list = [item['_id'] for item in hits_result]
执行后id_list的输出结果为:
['1017', '12566', '362817', '109992509', '115358851', '101675892', '105531943', 'ENSLCAG00010025960', 'ENSLCAG00010026017', 'ENSLOCG00000004109']
方式2:修改函数直接返回_id列表
如果不需要hits里的其他字段,可以直接修改函数逻辑,调用后直接拿到所有_id值:
import requests def get_gene_ids(gene): url = 'http://mygene.info/v3/query?q='+gene r = requests.get(url) hits = r.json()['hits'] return [item['_id'] for item in hits] # 直接调用即可获取cdk2对应的所有_id cdk2_ids = get_gene_ids('cdk2')
容错提示:如果遇到接口返回异常、个别条目缺失
_id字段的场景,可以在列表推导式里加判断避免抛出KeyError:[item['_id'] for item in hits if '_id' in item]
内容的提问来源于stack exchange,提问作者user17623951
相关产品推荐
相关产品推荐

