Python 同じある要素を持つリストをまとめる。
リスト内にある同じ要素でリストをまとめる方法についての質問です。
まずは私が書いた書いたコードを下記に示します。
# 元データ
original = [[1,"a"],[1,"b"],[1,"c"],
[2,"d"],[2,"e"],[2,"f"],
[3,"g"],[3,"h"],[3,"i"],
[4,"j"],[4,"k"],[4,"l"],
[5,"m"],[5,"n"],[5,"o"]]
new_data = [] # 格納先 三重のリストになる
# 同じID毎にまとめる
before_id = None
el = []
for row in original:
if row[0] != before_id and before_id is not None:
new_data.append(el)
el = [row]
else:
el.append(row)
before_id = row[0]
new_data.append(el)
print(new_data)
実行結果
[[[1, 'a'], [1, 'b'], [1, 'c']], [[2, 'd'], [2, 'e'], [2, 'f']],
[[3, 'g'], [3, 'h'], [3, 'i']], [[4, 'j'], [4, 'k'], [4, 'l']],
[[5, 'm'], [5, 'n'], [5, 'o']]]
上のコードのorginalリストのように二重リストの決まったindexにID番号があります。
例えてば、IDが1のリストは、originalリスト中に3つあるので、これらを纏めて、[[1,"a"],[1,"b"],[1,"c"]]のようなIDで纏めたのリストを作り、最終的には、実行結果のようにID毎に纏めた3重リストを作成したいです。私が書いたコードでも一応、実現できますが、汚いコードなので修正したいです。どなたかもっと良い(スマートな)方法をご教示頂ければ幸いです。
よろしくお願いします。