list.sort
またはsorted
からkey
-argumentは、あなたがそれを必要とする方法、それをソートするために使用することができ、最初にあなたが種類を注文する方法を定義する必要があり、最も簡単な(そしておそらく最速)をキーとして種類の辞書がありますそしてオーダー値として
# define a dictionary that gives the ordering of the types
priority = {int: 0, float: 0, str: 1, bool: 2, list: 3}
つtuples
とlists
は、まず、第1の要素を比較して比較しているという事実を使用することができ、この作業を行うには、それはそれが等しいかどう第三の比較(そのため、第二の要素を比較等しい場合に)。
# Define a function that converts the items to a tuple consisting of the priority
# and the actual value
def priority_item(item):
return priority[type(item)], item
最後に、あなたの入力を並べ替えることができ、私は、それがすでにソートですので、(私の知る限り、あなたの質問を理解して)、それをシャッフルするつもりです:
>>> l = [1, 2.0, "titi", True, [2, 3, 4, [3, [3, 4]], 5]]
>>> import random
>>> random.shuffle(l)
>>> print(l)
[True, [2, 3, 4, [3, [3, 4]], 5], 'titi', 2.0, 1]
>>> # Now sort it
>>> sorted(l, key=priority_item)
[1, 2.0, 'titi', True, [2, 3, 4, [3, [3, 4]], 5]]
そして、どのように正確にあなたがそれを可能にするでしょうソート? –
ハーフジョークの答え:整数と文字列の比較などが可能なPython 2.7への切り替え。 – Kevin
Teemuが尋ねるように - 期待される出力は? –