2016-10-03 2 views
0

일부 데이터를 그룹화해야하므로 3 단계 중첩을 시도하고 있습니다.파이썬 : 목록 이해력이있는 중첩 수준 3 개

나는 성냥의 명부가 있고,이 성냥 각각은 특정한 라운드에 속한다. 이 목록에서 전체 일치를 저장하고 싶지는 않지만 점수 만 저장하려는 경우를 제외하고는 각 라운드마다 이러한 일치 항목을 별도의 중첩 목록으로 다시 묶고 싶습니다.

all_matches = [final_match, semifinal1_match, semifinal2_match] 

이 일치 round, home_scoreaway_score 같은 속성이 있습니다

는 우리가이 명확합니다. 내가 뭘하려고 다음과 같은 방식으로 그룹화 할 수 있습니다 :

[ 
    [[1, 3], [2, 0]], # semifinal 
    [[1, 0]]   # final round 
] 

나는 자신이 속한 라운드에 의해 중첩 된 목록에 일치하는 그룹에 관리에 :

[list(matches) for round, matches in groupby(all_matches, key=attrgetter('round'))] 

그리고이 결과 :

[[semifinal1_match, semifinal2_match], [final_match]] 

이것은 내가하는 일이 아닙니다. 나는 목록 종합법이 전체 일치를 거기에서 가지기 대신에 그것의 각각 둥근 명부로 각 성냥을위한 점수 (명부에서) 만 추출하기위한 것 인 방법 파악하는 것을 시도하고있다.

답변

1

당신은 중첩 된 지능형리스트 사용하여 현재의 결과에서 필요한 특성을지고 각각의 일치를 확장 할 수 있습니다 : 오픈 브라켓 문맥이 이상 문을 계속 할 수 있습니다 : 당신은 백 슬래시가 필요하지 않습니다

[[[m.home_score, m.away_score] for m in matches] 
           for _, matches in groupby(all_matches, key=attrgetter('round'))] 
+0

을 여러 줄. –

+0

@ PM2Ring 네 말이 맞아. 보통 나는 확신 할 수 없으므로 나는 단지 안전하게 지키고있다. :) –