You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 01:18:24