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']