3

このクエリは、ソートに関するこの以前のクエリにいくらか関連しています

ここで、次のリストを並べ替える必要がありました。

data = [[1, .45, 0], [2, .49, 2], [3, .98, 0], [4, .82, 1], [5, .77, 1], [6, .98, 2] ]

最初に、このように内部リストの最後のメンバーの値によって、

[[1, .45, 0], [3, .98, 0],[4, .82, 1], [5, .77, 1], [2, .49, 2], [6, .98, 2]]

次に、サブリスト内で並べ替えます。つまり、最初'0'に中央のメンバーをキーとして使用するように最後のメンバーでリストを降順で並べ替え、次に最後のメンバーでサブリストを並べ替えます'1'

ここで、最初に最後のメンバーの値で並べ替えるのではなく、外部リストに存在するこれらの要素の順序に基づいて並べ替えたいと思います。つまり、外部リストがList_1の場合

`List_1 = [2, 0, 1]`

並べ替えは生成する必要があります

[[2, .49, 2], [6, .98, 2] [1, .45, 0], [3, .98, 0], [4, .82, 1], [5, .77, 1]]

最後に、中央の要素に基づいてサブリストを降順で並べ替えると、次のようになります。

[ [6, .98, 2],[2, .49, 2],   [3, .98, 0], [1, .45, 0], [4, .82, 1], [5, .77, 1]]

これについてどうやって行くかについての提案はありますか?

4

1 に答える 1

5

list.indexキーで使用:

>>> data = [[1, .45, 0], [2, .49, 2], [3, .98, 0], [4, .82, 1],
            [5, .77, 1], [6, .98, 2]]
>>> List_1 = [2, 0, 1]
>>> sorted(data, key=lambda e: (List_1.index(e[2]), -e[1]))
[[6, 0.98, 2], [2, 0.49, 2], [3, 0.98, 0], [1, 0.45, 0],
 [4, 0.82, 1], [5, 0.77, 1]]
于 2012-06-27T08:37:58.673 に答える