从对象列表中提取特定属性列表

时间:2020-12-28 19:26:14

标签: python

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

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

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

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

(解决方案可以只针对 Python 3)

2 个答案:

答案 0 :(得分:1)

类似的东西

[[getattr(o, a) for a in ['attr1', 'attr2']] for o in objects]

应该这样做。

答案 1 :(得分:1)

如果你想要一个对象属性的字典列表:

# 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'}]

至于首先获取动态属性列表,这已经得到了回答here