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},
]
このリストから重複する値を排除するためには、ジェネレータ式を使用して一意のキーの辞書を作成します。
unique_user_list = list({user["id"]: user for user in user_list}.values())
print(unique_user_list)
出力結果は以下のようになります。
[
{'age': 27, 'id': 1, 'name': 'Alice'},
{'age': 32, 'id': 2, 'name': 'Bob'},
{'age': 35, 'id': 3, 'name': 'Charlie'},
{'age': 40, 'id': 4, 'name': 'David'}
]
この方法では、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")
print(unique_user_list)
これで、Pythonの辞書型のリストから重複した値を排除する方法を学びました。