Python中如何通过dataframe取出的字符串名称访问同名对象的属性
解决方案
核心逻辑是通过字符串形式的人名,匹配到你预先定义的同名实例对象,再调用getattr获取属性,两种常用实现方式如下:
- 方案1:直接从当前作用域获取对应变量(适合小型脚本场景)
如果你的人员实例定义在全局作用域,可通过globals()内置函数获取全局变量字典,用人名字符串作为key取出对应实例:
person_name = df._get_value(n, 'People') person_obj = globals()[person_name] age = getattr(person_obj, 'Age')
如果实例定义在当前函数的局部作用域,将globals()替换为locals()即可。
- 方案2:预先构建人名字典映射(更推荐,适合正式项目)
直接操作作用域变量存在误取无关变量、冲突风险更高的问题,更稳妥的方式是提前把所有人员实例存入统一的映射字典:
# 提前构建人名到实例的映射,key为人名,value为对应的实例对象 person_map = { "张三": zhangsan, "李四": lisi, # 补充所有人员的映射关系 } # 遍历取值逻辑 person_name = df._get_value(n, 'People') person_obj = person_map[person_name] age = getattr(person_obj, 'Age')
两种方案均可以在取值步骤增加if person_name in 目标字典的判断,避免出现KeyError异常。
内容的提问来源于stack exchange,提问作者bmiller6031
相关产品推荐
相关产品推荐

