You need to enable JavaScript to run this app. Python如何根据输入姓名从接口返回的字典列表中查询对应id
优惠活动
大模型
产品
解决方案
定价
更多

Python如何根据输入姓名从接口返回的字典列表中查询对应id

Python人员ID查询功能实现

完整实现代码

import json
import requests

def get_person_id_map():
    # 修复原代码URL格式错误
    url = 'https://aig.com/e/id'
    try:
        response = requests.get(url, timeout=10)
        # requests库自带json解析方法,无需手动调用json.loads
        parsed_response = response.json()
        # 构建姓名到id的映射,同时处理同姓名对应多个id的情况
        person_map = {}
        for item in parsed_response.get('values', []):
            name = item.get('name')
            pid = item.get('id')
            if name not in person_map:
                person_map[name] = []
            person_map[name].append(pid)
        return person_map
    except Exception as e:
        print(f"接口数据获取失败:{e}")
        return {}

if __name__ == "__main__":
    person_id_map = get_person_id_map()
    if not person_id_map:
        print("未获取到有效人员数据,程序退出")
        exit()
    print("人员ID查询工具,输入exit可退出程序")
    while True:
        input_name = input("请输入要查询的人员姓名:").strip()
        if input_name == 'exit':
            print("程序退出")
            break
        ids = person_id_map.get(input_name)
        if not ids:
            print(f"未查询到姓名为【{input_name}】的人员信息")
        elif len(ids) == 1:
            print(f"姓名【{input_name}】对应的ID为:{ids[0]}")
        else:
            print(f"姓名【{input_name}】对应多个ID:{', '.join(ids)}")

代码说明

  • 修复了原代码中请求URL缺少双斜杠的格式错误,这是原代码运行报错的核心原因
  • 直接使用requests库自带的json()方法解析返回结果,比手动调用json.loads更简洁,也会自动处理编码兼容问题
  • 提前将接口返回的人员数据转换为姓名-ID映射字典,即使有上百条数据,查询速度也不受影响
  • 兼容同姓名对应多个ID的场景,会自动返回所有匹配的ID
  • 增加了网络异常、无有效数据、查询无结果的场景处理,不会出现无意义的程序崩溃报错
  • 支持循环多次查询,不需要每次运行程序都重新请求接口拉取数据

内容的提问来源于stack exchange,提问作者Kiran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 22:27:00