Python で順序を維持しデータベースの重複をチェックしながら重複オブジェクトをリストから削除する方法

Patricia Arquette
リリース: 2024-10-27 03:08:02
オリジナル
538 人が閲覧しました

How to Remove Duplicate Objects from a List in Python While Preserving Order and Checking for Database Overlaps?

Python のオブジェクト リストから重複を削除する

問題:

重複を削除する必要があります順序を保持し、データベース レコードの重複をチェックしながら、リストからオブジェクトを削除します。

解決策:

オブジェクトのリストから重複を削除するには、ビルトインset()関数内。ただし、これにはオブジェクトがハッシュ可能である必要があります。

オブジェクトのハッシュの定義:

オブジェクトをハッシュ可能にするには、__eq__ メソッドと __hash__ メソッドの両方を定義します。 __eq__ メソッドは 2 つのオブジェクトが等しいかどうかを判断し、__hash__ メソッドはオブジェクトのハッシュ値を計算します。

ハッシュ実装の例:

author_name の Book オブジェクトの場合および title 属性を使用すると、__eq__ メソッドは次のように実装できます:

<code class="python">def __eq__(self, other):
    return self.author_name == other.author_name and self.title == other.title</code>
ログイン後にコピー

__hash__ メソッドは次のように実装できます:

<code class="python">def __hash__(self):
    return hash(('title', self.title, 'author_name', self.author_name))</code>
ログイン後にコピー

データベースの重複のチェック:

データベースとの重複を確認するには、次の手順を実行します。

  1. 一意のデータベース オブジェクトのセットを作成します。
  2. リスト内の各オブジェクトについて、すでにセット内にある場合。
  3. オブジェクトがセット内にある場合は、リストから削除します。

保持順序:

set() 関数は重複した要素を削除しますが、順序は保持されません。順序を維持するには、list(set(myList)) を使用します。

追加メモ:

  • difflib ライブラリは、文字列の重複の可能性を比較するのに役立ちます。 .
  • オブジェクトの複雑さによっては、__eq__ メソッドを使用するよりも手動で重複をチェックする方が効率的である場合があります。

以上がPython で順序を維持しデータベースの重複をチェックしながら重複オブジェクトをリストから削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!