-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)

否则你可以这样做(根据乔恩克莱门茨......):

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

这是如何工作的:

参数是一个函数(在key这里使用 lambdas 很常见......)该列表根据函数的输出进行排序。下面的例子说明了:

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 回答