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

如何从列表中获取人员姓名及实现按爱好查询姓名(无匹配时返回空值)

解决方案:人员姓名提取与爱好查询功能实现

嘿,我来帮你搞定这两个需求,假设咱们用Python来实现——毕竟它处理这类数据场景特别顺手~

1. 从指定列表中获取人员姓名

首先咱们先定义一个常见的人员数据结构,比如是包含多个人员字典的列表:

people = [
    {"name": "张三", "hobbies": ["篮球", "读书"]},
    {"name": "李四", "hobbies": ["游泳", "画画"]},
    {"name": "王五", "hobbies": ["篮球", "爬山"]}
]

要提取所有人员的姓名,用列表推导式就可以轻松搞定,一行代码就能得到结果:

# 提取所有人员姓名
person_names = [person["name"] for person in people]
print(person_names)  # 输出: ['张三', '李四', '王五']

如果你的人员数据是类对象结构(比如每个人员是一个Person实例),只需要把person["name"]改成person.name就行,逻辑是完全一致的。

2. 实现根据爱好查询的功能

接下来咱们写一个专门的查询函数,满足「匹配爱好返回对应姓名,无匹配则返回空」的需求:

def search_by_hobby(people_list, target_hobby):
    # 初始化结果列表
    matched_names = []
    for person in people_list:
        # 检查目标爱好是否在当前人员的爱好列表中
        if target_hobby in person["hobbies"]:
            matched_names.append(person["name"])
    # 无匹配时返回空列表,符合「返回空值」的要求
    return matched_names

咱们来测试一下这个函数:

# 查询爱好为"篮球"的人员
print(search_by_hobby(people, "篮球"))  # 输出: ['张三', '王五']

# 查询不存在的爱好"唱歌"
print(search_by_hobby(people, "唱歌"))  # 输出: []

如果需要不区分大小写的查询(比如输入"篮球"和"篮球"都能匹配),可以稍微修改判断逻辑:

if target_hobby.lower() in [hobby.lower() for hobby in person["hobbies"]]:

这样就更灵活啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:37:51