如何用一行代码提取类对象列表中相同属性值生成新列表
一行代码提取类对象列表的指定属性值
问题场景
现有类对象列表示例如下:
child1 = Child(Name = 'Max', height = 5.1, weight = 100) child2 = Child(Name = 'Mimi', height = 4.1, weight = 80) my_object_list = [child1, child2]
需要用一行代码生成包含每个对象同一属性值的新列表,期望结果为:
my_new_list = ['Max', 'Mimi']
解决方案
直接提取固定属性
使用Python的列表推导式,一行即可完成需求:
my_new_list = [child.Name for child in my_object_list]
动态指定属性(更灵活)
如果需要动态切换要提取的属性(比如不确定是Name还是height),可以结合getattr()函数实现:
target_attr = 'Name' # 可动态替换为其他属性名,如'height' my_new_list = [getattr(child, target_attr) for child in my_object_list]
说明
列表推导式是Python中替代简单for循环生成列表的简洁写法,既满足一行代码的要求,又保持了代码可读性。getattr()则让属性提取更灵活,适配需要动态指定属性的场景。
内容的提问来源于stack exchange,提问作者Merithor
相关产品推荐
相关产品推荐

