Pythonの辞書型では、同じキーが存在する場合、新しい値で上書きされます。しかし、特定の状況では、同じキーの値を保持しつつ、重複を排除したい場合があります。この記事では、そのような状況に対応するための方法を紹介します。
辞書型のリストから重複を排除する
Pythonの辞書型のリストから重複する値を排除する方法を見てみましょう。以下のようなリストがあるとします。
user_list = [
{"id": 1, "name": "Alice", "age": 25},
{"id": 2, "name": "Bob", "age": 30},
{"id": 3, "name": "Charlie", "age": 35},
{"id": 1, "name": "Alice", "age": 27},
{"id": 4, "name": "David", "age": 40},
{"id": 2, "name": "Bob", "age": 32},
]
ここで、idが同じユーザーを排除したいとします。そのためには、以下のようなコードを使用します。
unique_user_list = list({user["id"]: user for user in user_list}.values())
このコードでは、ジェネレータ式を使用して、一意のidの辞書を作成します。その結果、idが同じユーザーは最後に出現したユーザーのみが保持されます。
任意のキーで重複を排除する
上記の方法では、idで重複を排除しましたが、任意のキーで重複を排除できるようにするための関数を作成することも可能です。
def distinct_by_key(data: list[dict], key: str) -> list[dict]:
return list({element[key]: element for element in data}.values())
この関数を使用すると、以下のように任意のキーで重複を排除できます。
unique_user_list = distinct_by_key(user_list, "id")
以上が、Pythonの辞書型で重複を排除する方法です。この方法を使用すれば、辞書型のリストから重複した値を効率的に排除することができます。