複数属性リストの並べ替え
単一の属性に基づいてリストを並べ替えるのは簡単です。ただし、複数の属性が並べ替え順序を指定する場合は、より複雑なアプローチが必要になります。
次のリストのリストを考えてみましょう:
[[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 サイトの他の関連記事を参照してください。