リストの複数属性の並べ替えに並べ替えキーを利用する
個々の属性に基づいてリストのリストを並べ替えるのは、多くの場合簡単です。ただし、複数の属性が関係する場合、ジレンマが発生します。複数回の並べ替えを行わずに効率的に並べ替えることはできますか?
この課題に対処するために、キーの並べ替えの概念を導入します。並べ替えキーは、リスト内の各要素に一意の値を割り当て、並べ替え順序を決定する関数として機能します。
たとえば、指定されたリストでは次のようになります。
[[12, 'tall', 'blue', 1], [2, 'short', 'red', 9], [4, 'tall', 'blue', 13]]
次の基準で並べ替えます。 "tall/short" と "color" の両方で、次の属性に基づいてタプルを返すキー関数を定義できます。
key = lambda x: (x[1], x[2])
使用このキーを使用すると、sorted 関数を使用してリストを並べ替えることができます:
s = sorted(s, key = key)
あるいは、itemgetter 関数を利用してパフォーマンスを高速化することもできます:
import operator s = sorted(s, key = operator.itemgetter(1, 2))
さらに、指定されたキーでソート関数を使用してリストを作成します:
s.sort(key = operator.itemgetter(1, 2))
ソートされたキーを使用すると、効率的になります。複数のソートパスを必要としない複数属性のソート。
以上がソートキーで複数の属性に基づいてリストを効率的にソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。