ホームページ > バックエンド開発 > Python チュートリアル > Python リストから重複した辞書を効率的に削除するにはどうすればよいですか?

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

Mary-Kate Olsen
リリース: 2024-11-26 13:30:10
オリジナル
518 人が閲覧しました

How Can I Efficiently Remove Duplicate Dictionaries from a Python List?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート