ホームページ > バックエンド開発 > Python チュートリアル > 順序を維持または無視しながら、Python リストから重複する辞書を削除するにはどうすればよいですか?

順序を維持または無視しながら、Python リストから重複する辞書を削除するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-28 00:21:10
オリジナル
168 人が閲覧しました

How Can I Remove Duplicate Dictionaries from a Python List While Preserving or Ignoring Order?

Python のリストから重複する辞書を削除する

辞書のリストが与えられた場合、目標は、同じキーを共有するすべての辞書を削除することです。値のペア。たとえば、リスト [{'a': 123}, {'b': 123}, {'a': 123}] を [{'a': 123}, {'b': 123}] に変換すると、次のようになります。この目的を達成します。

これを達成するには、簡単だが強力な手法を使用できます。

[dict(t) for t in {tuple(d.items()) for d in l}]
ログイン後にコピー

このアプローチは次のように機能します。 3 つの異なるステップ:

  1. 各辞書をタプルに変換します。タプルには辞書のキーと値のペアが格納されます。
  2. タプルのリストをセットに変換し、効果的に重複を削除します。セットは同じ値の複数のインスタンスを保持できません。
  3. dict() を使用してタプルから辞書を再構築します。 function.

コード スニペット内の変数は次のことを表します。

  • l: 辞書の元のリスト
  • d: 辞書内の個別の辞書list
  • t: その辞書のキーと値を表すタプルペア

辞書の元の順序を維持することが重要な場合は、次の修正されたアプローチを利用できます。

seen = set()
new_l = []
for d in l:
    t = tuple(d.items())
    if t not in seen:
        seen.add(t)
        new_l.append(d)
ログイン後にコピー

このコードには、参照セットを維持する追加のステップが組み込まれています。どのタプル (したがって辞書) がすでに検出されているかを追跡します。表示されたセット内でタプルが見つからない場合は、セットに追加され、対応する辞書が new_l リストに追加されます。

等価 (==) を使用して辞書を直接比較することに注意することが重要です。辞書がさまざまな方法で変更されている場合、必ずしも望ましい結果が得られるとは限りません。キーと値のペアの順序が重要な場合は、タプルを作成する前に辞書の項目を並べ替えることをお勧めします。

以上が順序を維持または無視しながら、Python リストから重複する辞書を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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