Python のリストから重複する辞書を削除する
Python で辞書のリストを扱う場合、重複を削除する必要がある場合があります。重複が同一のキーと値のペアを共有する場合でも、正確なキーと値の順序を共有する場合でも、効率的なアプローチが必要です。
重複の削除にハッシュを使用する
次のワンライナーキーと値のペアに基づいて重複した辞書を効果的に削除します:
[dict(t) for t in {tuple(d.items()) for d in l}]
このアプローチには、それぞれの変換が含まれます。辞書をそのキーと値のペアのタプルに変換します。タプルはハッシュ化できるため、設定されたデータ構造を利用して重複を排除できます。結果のセットには一意のタプルが含まれており、これらは辞書に変換されます。
順序の保持
辞書の順序が重要な場合、上記のアプローチでは十分ではありません。代わりに、より明示的な方法を使用できます。
l = [{'a': 123, 'b': 1234}, {'a': 3222, 'b': 1234}, {'a': 123, 'b': 1234}] seen = set() new_l = [] for d in l: t = tuple(d.items()) if t not in seen: seen.add(t) new_l.append(d) print(new_l)
このコードは、元の順序を維持しながら、重複しない辞書を新しいリストに蓄積します。セットを利用して、遭遇したタプルを追跡して一意性を確保します。
注:
場合によっては、2 つの辞書が同一のキーと値を持つ場合があることに注意することが重要です。同じタプルが得られない場合があります。これは、辞書にキーの追加/削除シーケンスが異なる場合に発生します。これがシナリオで懸念される場合は、タプルを作成する前に各辞書の項目を並べ替えることを検討してください。
以上がPython リストから重複した辞書を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。