首页 > 解决方案 > 从对象列表中提取特定属性列表

问题描述

我有一个对象列表。对象具有 >10 个属性。我想制作一个仅包含类中特定属性子集的列表。

是否有任何内置函数可以做到这一点?或者如果不是,那么最pythonic的方法是什么?

我试过这个,但我希望有一种动态的方式来引用特定的属性(例如,传递字典或类似的解决方案,这将使我能够找出运行时的哪些属性)

filtered_list = [[object.attr1, object.attr2] for object in list_objects]

(解决方案可能只适用于 Python 3)

标签: python

解决方案


如果您想要对象属性的字典列表:

# the list of attributes to get from each object
attrs = ['attr1', 'attr2']

# using dictionary comprehension to generate the list of attributes and their values
attr_vals_dict = [{a:getattr(o, a) for a in attrs} for o in objects]

输出:

[{'attr1': 1, 'attr2': 2}, {'attr1': 3, 'attr2': 4}, {'attr1': 'banana', 'attr2': 'apple'}]

至于首先获取属性的动态列表,这里已经回答


推荐阅读