60

I have a list of objects. Object has 3 string attributes. I want to make a list containing only a specific attribute from class.

Is there any built-in functions to do that?

SilentGhost
  • 307,395
  • 66
  • 306
  • 293
Janis Veinbergs
  • 6,907
  • 5
  • 48
  • 78

4 Answers4

92

A list comprehension would work just fine:

[o.my_attr for o in my_list]

But there is a combination of built-in functions, since you ask :-)

from operator import attrgetter
map(attrgetter('my_attr'), my_list)
Jarret Hardie
  • 95,172
  • 10
  • 132
  • 126
11

are you looking for something like this?

[o.specific_attr for o in objects]
SilentGhost
  • 307,395
  • 66
  • 306
  • 293
10

The first thing that came to my mind:

attrList = map(lambda x: x.attr, objectList)
Coffee on Mars
  • 988
  • 6
  • 21
4

Assuming you want field b for the objects in a list named objects do this:

[o.b for o in objects]
RossFabricant
  • 12,364
  • 3
  • 41
  • 50