リスト内の複数属性の並べ替え
単一の属性によるリストの並べ替えは、Python のsorted() 関数と key 引数を使用することで簡単に行えます。ただし、複数の属性による並べ替えには課題があります。
問題の定式化:
リストのリストを、次のセクションで説明されているような複数の属性で素早く並べ替えるにはどうすればよいでしょうか。元の質問?
解決策:
は 2 つありますリスト内の複数属性の並べ替えの効率的な方法:
キーとして Lambda 関数を使用する:
s = sorted(s, key = lambda x: (x[1], x[2]))
この Lambda 関数はそれぞれを受け取りますx をサブリスト化し、2 番目と 3 番目の要素を含むタプルを返し、両方の要素に基づいて並べ替え順序を効果的に指定します。 attributes.
**operator.itemgetter():
import operator s = sorted(s, key = operator.itemgetter(1, 2))
operator.itemgetter() を使用すると、各サブリストから指定された要素を抽出する関数が返されます。複数の属性に基づいて並べ替えます。
どちらの場合も、並べ替えは順序は、key 関数または itemgetter 引数で指定された属性インデックスの順序によって決まります。
補足:
インプレース並べ替えの場合は、 を使用できます。適切なキー関数を使用して .sort() を直接実行します:
s.sort(key = operator.itemgetter(1, 2))
以上がPython で複数の属性によってリストのリストを効率的に並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。