「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python リストから重複した辞書を効率的に削除するにはどうすればよいですか?

Python リストから重複した辞書を効率的に削除するにはどうすればよいですか?

2024 年 11 月 7 日に公開
ブラウズ:765

How to Efficiently Remove Duplicate Dictionaries from a Python List?

Python リストの一意の辞書

辞書のリストは、Python アプリケーションでは一般的です。ただし、重複した辞書の管理は困難な場合があります。この記事では、効率的に重複を削除し、一意の辞書のリストを取得する方法について説明します。

辞書のリストを考えてみましょう:

L = [
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 2, 'name': 'hanna', 'age': 30}
]

問題へのアプローチ

辞書のリストの重複を排除するには、リストを反復処理して各辞書を他の辞書と比較する単純なアプローチが必要です。ただし、大きなリストの場合、このプロセスは計算コストが高くなる可能性があります。

一時辞書の使用

より効率的なソリューションでは、一時辞書を活用して重複排除を処理します。辞書のキーは各辞書の id フィールドに設定され、値は辞書自体に設定されます。各一意の ID は 1 つの辞書エントリのみに対応するため、この操作は効果的に重複を除外します。

一意の辞書の取得

一時辞書が設定されると、値 (一意の辞書を表します) は、values() メソッドを使用して取得できます。

Python 実装

Python 2.7:

{v['id']:v for v in L}.values()

Python 3:

list({v['id']:v for v in L}.values())
:v for v in L}.values())

Python 2.5/2.6:

dict((v['id'],v) for v in L).values()
dict((v['id' ],v) for v in L).values()

これらの簡潔な解決策により、一意の辞書のリストが生成されます:
dict((v['id'],v) for v in L).values()
[ {'id': 1, 'name': 'ジョン', '年齢': 34}, {'id': 2, 'name': 'ハンナ', '年齢': 30} ]

このアプローチでは、一時辞書を利用して一意の辞書値を識別して抽出することで、重複を効率的に削除します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3