파이썬의 객체 목록에서 속성 목록 추출


81

나는이 균일 파이썬에서 개체의 목록을 :

class myClass(object):
    def __init__(self, attr):
        self.attr = attr
        self.other = None

objs = [myClass (i) for i in range(10)]

이제 일부 기능 (예 : 데이터 플로팅)을 전달하기 위해 해당 클래스의 일부 속성 (attr이라고하자)이 포함 된 목록을 추출하고 싶습니다.

비단뱀적인 방법은 무엇입니까?

attr=[o.attr for o in objsm]

?

목록을 파생하고 여기에 메서드를 추가 할 수 있으므로 다음과 같은 관용구를 사용할 수 있습니다.

objs.getattribute("attr")

?


1
중복 stackoverflow.com/q/677656/127465 , esp를 참조하십시오 . operator.attrgetter과 대답
ThomasH

답변:



85

attrs = [o.attr for o in objs]설명하는 것과 같은 목록을 만들기위한 올바른 코드였습니다. 이것을 위해 서브 클래스 list를 시도하지 마십시오 . 그 스 니펫에서 마음에 들지 않는 부분이 있습니까?


2
너무 장황하고 자주 사용할 것이므로 단축키가 편리합니다. numpy의 구조화 된 배열 arr [ 'colname'] 또는 recarrays arr.colname은 이미 비슷한 것을 제공하지만이 경우에는 명명 된 데이터 (및 일부 함수)를 보유하는 객체를 사용하고 있습니다.
franjesus

그 의도이며, 경우 getOattr= lambda l,a: [getattr(i,a) for i in l] 그래서 당신은 할 수getOattr(l,'id') 또는 getOattr(l,'name') . 당신이 다음보다 구체적인 필요하면 getIds= lambda l,a: [i.id for i in l]그래서 당신이 할 수있는getIds(l)
user2390183
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.