我有两个列表
A = [5,2,3,4,1]
B = [3,1,5]
我想使用A对B进行排序,使得输出反映: [5,3,1]
我该如何实现?
答案 0 :(得分:4)
你可以使用......但一切都取决于你所追求的 - 还有其他方法......
>>> a = [5, 2, 3, 4, 1]
>>> b= [3, 1, 5]
>>> sorted(b, key=a.index)
[5, 3, 1]
或者正如@Manan指出的那样 - 您可以使用a.sort(...)
答案 1 :(得分:3)
对于就地排序,应该这样做:
B.sort(key=A.index)
否则你可以这样做(根据Jon Clements ......):
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}]
答案 2 :(得分: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]
希望这有帮助。