最近のバージョンのPythonで、以前のcmp関数からキー関数を渡すようになったため、特定のオブジェクトに対して複雑な並べ替えを実行するのが難しくなっています。sort()
たとえば、文字列のタイブレーカーフィールドのセットを使用して、オブジェクトのセットを新しいものから古いものへと並べ替えたいとします。したがって、日付を逆の順序にし、文字列を自然な順序にします。比較関数を使用すると、文字列フィールドと比較した日付フィールドの比較を逆にすることができます。しかし、キー関数を使用して、日付または文字列のいずれかを反転/反転する方法を見つける必要があります。
数字を扱うのは(醜いですが)簡単です-何かからそれらを引くだけです-しかし、日付(別の日付からそれらを引いてタイムデルタを比較する)と文字列(...私にはわかりません)の同様のハックを見つける必要がありますか?ロケールに依存しない方法で順序を逆にする方法)。
の存在は知っていますが、 「主に、比較関数がサポートされなくなったPython3に変換されるプログラムの移行ツールとして使用さfunctools.cmp_to_key()
れる」と説明されています。これは、キーメソッドを使用してやりたいことができるはずだということを意味しますが、どうすればよいでしょうか。