如何在 Python 中根据另一个列表中的值对一个列表进行排序?


我们可以通过将第二个列表作为排序顺序中第一个列表中值的索引号来根据另一个列表中的值对一个列表进行排序。

按另一个列表中的值对列表进行排序

示例

在此示例中,我们将按另一个列表中的值对一个列表进行排序,即第二个列表将按排序顺序放置的顺序排列索引 -

# Two Lists list1 = ['BMW', 'Toyota', 'Audi', 'Tesla', 'Hyundai'] list2 = [2, 5, 1, 4, 3] print("List1 = \n",list1) print("List2 (indexes) = \n",list2) # Sorting the List1 based on List2 res = [val for (_, val) in sorted(zip(list2, list1), key=lambda x: x[0])] print("\nSorted List = ",res)

输出

List1 = 
 ['BMW', 'Toyota', 'Audi', 'Tesla', 'Hyundai']
List2 (indexes) = 
 [2, 5, 1, 4, 3]

Sorted List =  ['Audi', 'BMW', 'Hyundai', 'Tesla', 'Toyota']

使用字典根据另一个列表中的值对列表进行排序

示例

在此示例中,我们将按另一个列表中的值对列表进行排序。我们将把这两个列表添加到字典中,然后使用键值和 lambda 对字典进行排序。

# Two Lists list1 = ['BMW', 'Toyota', 'Audi', 'Tesla', 'Hyundai'] list2 = [2, 5, 1, 4, 3] print("List1 = \n",list1) print("List2 (indexes) = \n",list2) # Blank dictionary newDict = {} # Blank list outList = [] # Both the lists in our dictionary newDict newDict = {list1[i]: list2[i] for i in range(len(list2))} # Sorting using the sorting() based on key and values # Using lambda as well s = {k: v for k, v in sorted(newDict.items(), key=lambda item: item[1])} # Element addition in the list for i in s.keys(): outList.append(i) print("\nSorted List = \n",outList)

输出

List1 = 
 ['BMW', 'Toyota', 'Audi', 'Tesla', 'Hyundai']
List2 (indexes) = 
 [2, 5, 1, 4, 3]

Sorted List = 
['Audi', 'BMW', 'Hyundai', 'Tesla', 'Toyota']

更新于: 16-9-2022

3K+ 浏览量

开启你的 职业

完成课程即可获得认证

开始
广告
© . All rights reserved.