2016-10-03 4 views
0

いくつかのデータをグループ化する必要があるため、3レベルのネストを達成しようとしています。Python:リスト内包の3レベルのネスト化

私はマッチのリストを持っており、これらのマッチのそれぞれは特定のラウンドに属しています。私はこれらのマッチを各ラウンドの別々のネストされたリストに再編成したいが、私はこれらのリストにマッチ全体を保存するのではなく、スコアだけを保存したい。明確にするために

、我々はこれを持っている:

all_matches = [final_match, semifinal1_match, semifinal2_match] 

これらの試合はroundhome_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あなたが正しいです。通常はわかりませんので、安全なものにしておきます:) –

関連する問題