2017-09-28 10 views
1

タプルのリストを最後の要素でソートする必要がある場合、タプルは空にすることができます。 私はタプルが空でない場合はソートする方法を知っている:
sorted(lst, key=lambda p: p[-1]);Pythonでタプルが空の場合、最後の要素でタプルのリストをソートする方法は?

しかし、リストがあり()IndexError: tuple index out of range

回避方法が見つかりませんでした。

答えて

5

最後の要素を取る前にtupleが空であるかどうかをチェックするだけです。

sorted(lst, key=lambda p: bool(p) and p[-1]) 

bool(p) and p[-1](0に評価される)戻りFalseタプルが空である、そうでない場合は最後の値を返します。

この方法では、すべての値が正の値であれば、空のタプルがソート済みリストの最初に来ます。それは彼らがラムダでtupleを返すことによってなんとかまだ、一般的なケースでは最初か最後見えるようにするために多くの調整を必要とします。

sorted(lst, key=lambda p: (not bool(p),bool(p) and p[-1])) 

以下は空のタプルがあるためnotの(リストの最後に来るようになります空の場合はTrueとなる)

関連する問題