PHP前端开发

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

百变鹏仔 4小时前 #Python
文章标签 列表

我们可以按另一个列表中的值对列表进行排序,方法是将第二个列表设置为按排序顺序排列的第一个列表中的值的索引号。

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

示例

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

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

输出

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

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

示例

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

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

输出

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