2016-05-27 9 views
-1

[[1,2,"s"],[1,5,"e"],...]のようなリストのリストがあります.3番目の値は常にsまたはeです。どのように私はsort()呼び出すことができ、そのようなリストはに基づいてソートされている:最初のインデックスが同じであればPythonでカスタム述語ソートを使用する方法

  1. 最初のインデックス
  2. sが最初に来ます。

おかげ

+1

https://docs.python.org/3/howto/sorting.html#key-functions "python sort predicate"の最初の結果... – Jasper

答えて

0

はカスタムkey機能を記述します。

def sort_key(list_): 
    if list_[2] == 's': 
     return (list_[0], 0) 
    return (list_[0], 1) 

test_list = [[1, 2, 's'], [1, 5, 'e'], [2, 4, 'e'], [2, 3, 's']] 
test_list.sort(key=sort_key) 
# [[1, 2, 's'], [1, 5, 'e'], [2, 3, 's'], [2, 4, 'e']] 
2

あなたは、アイテムの比較キーを生成するために使用されるlist.sortにカスタムキー機能を渡すことができます。

>>> l = [[1, 5, 'e'], [1, 2, 's'], [0, 4, 'e']] 
>>> l.sort(key=lambda x: (x[0], -ord(x[2]))) 
>>> l 
[[0, 4, 'e'], [1, 2, 's'], [1, 5, 'e']] 
関連する問題