【Python】要素が辞書のリストから重複した要素を削除する方法

こんにちは、にわこまです!

今回は、要素が辞書のリストから重複した要素を削除する方法について紹介します。

 

 

スポンサードサーチ


重複を削除する方法

ソースコードを以下示します。

def remove_duplicate(dict_list):
    result_list = []
    sets = set()
    for d in dict_list:
        s = tuple(sorted(d.items()))
        if (s not in sets):
            sets.add(s)
            result_list.append(d)
    return result_list

# test
dict_list = [
    {"uuid":"0001", "name":"AAAA"},
    {"uuid":"0001", "name":"AAAA"},
    {"name":"AAAA", "uuid":"0001"},
    {"uuid":"0001", "name":"AAAA", "age": 369},
    {"uuid":"0002", "name":"BBBB"},
    {"uuid":"0002", "name":"BBBB"}
]
print(remove_duplicate(dict_list))

 

 

コードの解説

2行目の「result_list」は、戻り値用のリストを定義しています。

 
3行目の「sets」は、重複チェック用の集合を定義しています。

重複チェック用としてはリストでも問題ないですが、念のため重複した値を追加できない集合を使っています。

 
5行目は、辞書のkey-valueを並び変えてタプル型に変換しています。

並び替えを実行することで辞書内のkey-valueの順序が異なる場合に対応しています。

 
6行目は、重複チェックをしています。

 
7行目は、重複チェック用の集合に値を追加しています。

この集合に追加するのは5行目で作成したタプルです。

 
8行目は、戻り値用のリストに値を追加しています。

このリストに追加するのは4行目のfor文で取得した値です。

 

 

動作確認

remove_duplicate.pyを保存したディレクトリまで移動します。

下記のコマンドを実行します。

python remove_duplicate.py
=====
[{'uuid': '0001', 'name': 'AAAA'}, {'uuid': '0001', 'name': 'AAAA', 'age': 369}, {'uuid': '0002', 'name': 'BBBB'}]

 

以上で動作確認は完了です。

 

 

スポンサードサーチ


まとめ

今回は、要素が辞書のリストから重複した要素を削除する方法について紹介しました。

 
他に「こんなことしたい」「これを実現したい」などありましたらメールやTwitterで連絡お願いします!!!

 
最後までお読みいただきありがとうございます。


スポンサードサーチ