-2

私は2つのリストを持っています

A=[5,2,3,4,1]

B=[3,1,5]

出力が反映されるように、Aを使用してBをソートしたい:[5,3,1]

どうすればこれを実装できますか?

4

3 に答える 3

6

使用できます...しかし、すべてはあなたが求めているものに依存します-他の方法があります...

>>> a = [5, 2, 3, 4, 1]
>>> b=  [3, 1, 5]
>>> sorted(b, key=a.index)
[5, 3, 1]

または@Mananが指摘したように-使用してインプレースソートできますa.sort(...)

于 2012-12-04T13:05:46.833 に答える
4

インプレースソートの場合、これはそれを行う必要があります:

B.sort(key=A.index)

それ以外の場合は、これを行うことができます (Jon Clements によると...):

BSorted = B.sorted(key=A.index)

仕組み:

引数は関数です (ここkeyでラムダを使用するのはかなり一般的です...) リストは関数の出力に従ってソートされます。以下の例は、次のことを示しています。

A = [{'a':100,'b':10},{'a':56,'b':100},{'a':90,'b':90}]
A.sort(key=lambda x:x['a']) 
print(A)
A.sort(key=lambda x:x['b']) 
print(A)

これは以下を出力します:

[{'a':56,'b':100},{'a':90,'b':90},{'a':100,'b':10}]
[{'a':100,'b':10},{'a':90,'b':90},{'a':56,'b':100}]
于 2012-12-04T13:05:58.693 に答える
0

あなたの質問に対する私の理解が正しければ、あなたは次のことをしたいと思っています:

A = [5,2,3,4,1]
B = [3,1,5]
C = []
for i in range(len(A)):
    if A[i] in B:
        C += [A[i]]

print C # [5, 3, 1]

お役に立てれば。

于 2012-12-04T13:47:14.810 に答える