2016-10-03 173 views
0

我試圖實現三個層次的嵌套,因爲我需要對一些數據進行分組。Python:三層嵌套與列表理解

我有一個匹配列表,每個匹配都屬於特定的輪次。我希望將這些比賽重新分組爲每輪的單獨嵌套列表,除了我不想將整個比賽存儲在這些列表中,而只是將比分存儲在這些列表中。

要澄清一下,我們有這樣的:

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你說得對。通常我不確定,所以我只是保持一個安全:) –