ホームページ >バックエンド開発 >Python チュートリアル >Python でセットに変換した後、リストの順序を維持するにはどうすればよいですか?

Python でセットに変換した後、リストの順序を維持するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-10 18:56:10929ブラウズ

How Can I Maintain List Order After Converting to a Set in Python?

セットに変換するときにリストの順序を維持する

Python でリストをセットに変換する場合、要素の順序はセットによって変わる可能性があります順序付けされていないデータ構造であること。元の注文を保持する必要がある場合、この動作は不便な場合があります。

  1. 注文変更の理由

セットは、メンバーシップの素早い検索を提供するように設計されています。要素をハッシュ値として保存することによって。要素がセットに追加される順序は保持されないため、リストをセットに変換すると、検索効率を最適化するために要素が並べ替えられます。

  1. セット操作による順序の保持

a.リスト内包表記

順序を維持しながらリストから特定の要素を削除する必要がある場合は、リスト内包表記を使用できます。例:

a = [1, 2, 20, 6, 210]
b = set([6, 20, 1])
result = [x for x in a if x not in b]  # [2, 210]

b. OrderedDict (Python 3.7 )

Python バージョン 3.7 以降では、collections.OrderedDict を使用して順序付きセットを作成できます。集合演算の後でも、要素の順序は維持されます。

from collections import OrderedDict

a = OrderedDict.fromkeys([1, 2, 20, 6, 210])
b = OrderedDict.fromkeys([6, 20, 1])
result = OrderedDict.fromkeys(x for x in a if x not in b)  # OrderedSet([(2, None), (210, None)])

c. OrderedSet (古い Python バージョン)

古い Python バージョンでは、orderedset パッケージを使用して同様の機能を実現できます。

import orderedset

a = orderedset.OrderedSet([1, 2, 20, 6, 210])
b = orderedset.OrderedSet([6, 20, 1])
result = orderedset.OrderedSet(x for x in a if x not in b)

これらの手法を使用すると、集合演算を実行できます。元のリストの順序を維持しながら。

以上がPython でセットに変換した後、リストの順序を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。