ホームページ > バックエンド開発 > Python チュートリアル > Python で複数の属性に基づいてリストを効率的に並べ替えるにはどうすればよいですか?

Python で複数の属性に基づいてリストを効率的に並べ替えるにはどうすればよいですか?

DDD
リリース: 2024-12-11 18:02:13
オリジナル
343 人が閲覧しました

How Can I Efficiently Sort a List Based on Multiple Attributes in Python?

複数属性リストの並べ替え

単一の属性に基づいてリストを並べ替えるのは簡単です。ただし、複数の属性が並べ替え順序を指定する場合は、より複雑なアプローチが必要になります。

次のリストのリストを考えてみましょう:

[[12, 'tall', 'blue', 1],
[2, 'short', 'red', 9],
[4, 'tall', 'blue', 13]]
ログイン後にコピー

このリストを「tall」または「」だけで並べ替えます。 short' 属性は、sorted(s, key = itemgetter(1)) を使用して実現できます。ただし、並べ替え順序が高さと色の両方の属性に基づく必要がある場合は、より効率的なソリューションが必要です。

複数属性キー関数

複数の属性でリストを作成すると、希望のソート順序を表すタプルを返すキー関数を定義できます。たとえば、次のキー関数は、最初に高さで並べ替え、次に色で並べ替えます:

key = lambda x: (x[1], x[2])
ログイン後にコピー

このキー関数を使用すると、リストを次のように並べ替えることができます:

s = sorted(s, key=key)
ログイン後にコピー

または、itemgetter () を使用すると、同じ結果をより効率的に達成できます:

import operator
key = operator.itemgetter(1, 2)
ログイン後にコピー

このキー関数は高速であり、関与しません。 Python 関数呼び出し。

ダイレクト ソート

最後に、sorted() の代わりに sort() メソッドを使用して再割り当てすることで、上記のアプローチをさらに簡素化できます。これにより、新しいリストを作成する必要がなくなります:

s.sort(key=key)
ログイン後にコピー

以上がPython で複数の属性に基づいてリストを効率的に並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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