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

Python中如何判断指定名称的对象是否存在于对象列表中?

基于姓名判断对象是否在列表中的解决方案

方法一:重写类魔法方法实现"姓名" in 列表语法

你可以在Information类中重写__eq__方法,让它支持和字符串(姓名)的比较逻辑,这样就能直接用"Robert" in list_users完成判断:

class Information:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def __eq__(self, other):
        # 处理与字符串的比较:直接匹配姓名
        if isinstance(other, str):
            return self.name == other
        # 保留同类型对象的比较逻辑(可按需调整规则)
        elif isinstance(other, Information):
            return self.name == other.name and self.age == other.age
        # 其他类型直接返回不匹配
        return False

使用示例:

list_users = [Information(name='Robert', age=29), 
              Information(name='Richard', age=33),  
              Information(name='Carol', age=43),  
              Information(name='Ann', age=24)]

print('Robert' in list_users)  # 输出 True
print('David' in list_users)   # 输出 False

方法二:不修改类的替代方案

如果无法改动Information类的定义,用any()函数结合生成器表达式就能快速实现判断,简洁又灵活:

# 直接一行判断
print(any(user.name == 'Robert' for user in list_users))  # 输出 True

# 封装成函数复用
def check_user_exists(name, user_list):
    return any(u.name == name for u in user_list)

print(check_user_exists('Carol', list_users))  # 输出 True

两种方案对比:

  • 魔法方法方案贴合Python语法习惯,代码可读性更高;
  • any()方案无需修改原有类,适合无法改动类定义的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 02:09:13