Webは用いる人のリテラシーで決まる ウェブ運用と開発現場を経験したエンジニアのTIPS
TOP > BLOG > IT記事

Pythonの二次元配列のリストから重複を削除する

早川朋孝 早川朋孝
EC専門のSE

Pythonのリストから重複を削除するのは1行で済む。仮にdata_listと名前のリストがあるとすると、重複を削除するのはこの記述だけで終わり。
data_list = list(set(data_list))

しかし、二次元配列で、特定の行をキーにして重複を削除したいという場合は一手間加えないといけない。ここでは0列目をキーにすると仮定して話を進める。

delete_listというのは削除対象の列番号(インデックス)を格納するためのリスト型変数。ある1行が、同じ行より1行下から最後の行までに一致した場合にdelete_listにインデックスを入れていく。

data_list:重複を削除したい元の二次元配列
delete_list:削除対象のインデックスを格納するリスト
data_list_new:重複を排除した新しい二次元配列

delete_list = []  
for i, row in enumerate(data_list):
    for j in range(i+1, len(data_list)):
        if j == len(data_list): 
            j -= 1   #最後の行の処理はi+1でout of range になってしまうので-1にする
        if data_list[i][0] == data_list[j][0]:
           delete_list.append(j)

delete_list = list(set(delete_list))  #1次元のリストにして重複を削除する

data_list_new = []
for i, row in enumerate(data_list):
    if i not in delete_list:
        data_list_new.append(row)

最後に新しいリスト型の変数を用意して、delete_listと一致しない行のデータをそこに格納していく。これで終わり。

×
このブログを書いてる人
早川 朋孝 EC専門のSE
IT業界歴20年のエンジニアです。ネットショップ勤務で苦労した経験から、EC・ネットショップ事業者に向けて、バックオフィス業務の自動化・効率化を提案するSEをしています。
プロフィール
API連携の相談にのります
趣味は読書、ピアノ、マリノスの応援など
PAGE TOP