按特定顺序对列表进行排序

2024-10-02 18:14:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个列表unsortedListbasedList,我要做的是根据basedList顺序对unsortedList进行排序,下面是一个示例:

unsortedList = [2, 7, 8]
baseList = [10, 1, 3]

输出应该是[8,2,7]

unsortedlist元素顺序应该像basedList 元素一样排序,因此如果basedList的i元素是最大值,则未排序列表也应该以最大值开始

另一个例子:

unsortedList = [10, 12, 23, 0, 8]
baseList = [30, 7, 9, 10, 13]

输出应该是[23,0,8,10,12]

python中是否已有任何方法可以满足我的需要


Tags: 方法元素示例列表排序顺序例子baselist
2条回答

以下是一种方法:

unsortedList = [2, 7, 8]
baseList = [10, 1, 3]

en=[i for i in enumerate(baseList)]

l=sorted(en, key=lambda x:x[1])

l2=list(zip([i[0] for i in l], sorted(unsortedList)))

l3=sorted(l2, key=lambda x:x[0])

result=[i[1] for i in l3]

print(result)
#[8,2,7]

以下是一个不使用zip和lambda的解决方案:

unsortedList = [10, 12, 23, 0, 8]
baseList = [30, 7, 13, 7, 1]

#prep step: modifies the baseList based on how often a duplicate number appears
visited = []
for i, number in enumerate(baseList):
    visited.append(number)
    baseList[i] += visited.count(number)/len(baseList)
    
#main code
result = []
for item in baseList:
    idx = sorted(baseList).index(item)
    result.append(sorted(unsortedList)[idx])
    
print(result)
#prints [23, 8, 12, 10, 0]

相关问题 更多 >