2017-07-10 8 views
0

MWEによって列挙リスト:ソート値

list1 = [2,5,46,23,9,78] 
list1 = list(enumerate(list1)) 

今私が思うには、昇順、と言うには、オリジナルのリスト1でインデックス1、すなわち、このリストをソートしたいです。 どうすればいいですか?

インデックスと値の両方を私に与えてくれるものが欲しいです。

list2 = sorted(list1[1], key=float) 
+0

それはオプションだ場合は、それを列挙する前にリストを並べ替えを検討: 'リスト((ソート(リスト1))を列挙する)'、あなたが元のインデックスへの参照を保持する場合を除き、その場合、これを中動作しません。 – Peri461

答えて

4

並べ替え: - x[1]

>>> list2 = sorted(list1, key=lambda x:x[1]) 
>>> list2 
[(0, 2), (1, 5), (4, 9), (3, 23), (2, 46), (5, 78)] 
3

このようなものはありますか?

>>> from operator import itemgetter 
>>> sorted(list1, key=itemgetter(1)) 
[(0, 2), (1, 5), (4, 9), (3, 23), (2, 46), (5, 78)] 

keyに1つの引数の機能を提供することにより、我々は sortedで使用されるリスト要素の比較キーを指定しています。 itemgetterは、アイテムゲッターオペレータ [i]の周りの素敵な機能ラッパーです。キーとして item[1]

1

あなたは、全体のリスト(だけでなく、最初の要素)を渡し、その値をソートするためにラムダ関数を使用する必要があります。

>>> list1 = [2,5,46,23,9,78] 
>>> list2 = list(enumerate(list1)) 
>>> list2 
[(0, 2), (1, 5), (2, 46), (3, 23), (4, 9), (5, 78)] 
>>> list3 = sorted(list2, key=lambda x: x[1]) 
>>> list3 
[(0, 2), (1, 5), (4, 9), (3, 23), (2, 46), (5, 78)]