私は2つのリストを持っています
A=[5,2,3,4,1]
B=[3,1,5]
出力が反映されるように、Aを使用してBをソートしたい:[5,3,1]
どうすればこれを実装できますか?
私は2つのリストを持っています
A=[5,2,3,4,1]
B=[3,1,5]
出力が反映されるように、Aを使用してBをソートしたい:[5,3,1]
どうすればこれを実装できますか?
使用できます...しかし、すべてはあなたが求めているものに依存します-他の方法があります...
>>> a = [5, 2, 3, 4, 1]
>>> b= [3, 1, 5]
>>> sorted(b, key=a.index)
[5, 3, 1]
または@Mananが指摘したように-使用してインプレースソートできますa.sort(...)
インプレースソートの場合、これはそれを行う必要があります:
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}]
あなたの質問に対する私の理解が正しければ、あなたは次のことをしたいと思っています:
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]
お役に立てれば。