複数のフィールドによる Python リストの並べ替え
単一フィールドによる Python リストの並べ替えは一般的なタスクですが、必要な場合はどうすればよいですか?複数のフィールドで並べ替えますか?
並べ替えられた CSV から作成された次のリストについて考えてみましょう。 file:
list1 = sorted(csv1, key=operator.itemgetter(1))
これにより、リストが 2 番目のフィールドで並べ替えられます。ただし、最初に最初のフィールドで並べ替え、次に 2 番目のフィールドで並べ替えたい場合はどうすればよいでしょうか?
解決策は、sorted() 関数のキー引数として ラムダ関数 を使用することです。 。ラムダ関数は、単純な並べ替え基準を定義するために使用できる匿名関数です。この場合、ラムダ関数はリスト内の要素を表す 1 つの引数を受け取り、並べ替えの基準となる 2 つのフィールドを含むタプルを返します。
たとえば、リストを並べ替えるには、最初と 2 番目のフィールドについては、次のラムダ関数を使用できます。
sorted_list = sorted(list1, key=lambda x: (x[0], x[1]))
このラムダ関数は、リスト要素の最初と 2 番目のフィールドを含むタプルを返します。次に、リストはこのタプルによって並べ替えられ、その結果、リストは最初に最初のフィールドで並べ替えられ、次に 2 番目のフィールドで並べ替えられます。
ラムダ関数を使用して、1 つのフィールドを昇順に並べ替え、もう 1 つのフィールドを降順に並べ替えることもできます。たとえば、最初のフィールドを昇順、2 番目のフィールドを降順で並べ替えるには、次のラムダ関数を使用できます。
sorted_list = sorted(list1, key=lambda x: (x[0], -x[1]))
このラムダ関数は、リスト要素の最初のフィールドと、 2 番目のフィールドの負の値。次にリストはこのタプルによって並べ替えられ、その結果リストは最初のフィールドが昇順、2 番目のフィールドが降順で並べ替えられます。
以上がPython リストを複数のフィールドで並べ替える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。