📅  最后修改于: 2023-12-03 15:10:08.757000             🧑  作者: Mango
在Python中,如果您要按一个值对列表进行排序,可以使用内置的sorted()
函数。然而,当需要按照另一个值对列表进行排序时,可以使用zip()
和sorted()
函数的结合使用。这样做的好处是可以在不需要重新组织列表的情况下按照另一个列表排序。
我们先创建两个示例列表names
和ages
:
names = ["Tom", "Jerry", "Mike", "Jack"]
ages = [25, 30, 20, 35]
将两个列表合并成元组,使用zip()函数:
zipped = zip(names, ages)
使用sorted()函数,key参数指定排序应该依据的另一个列表的值,假设我们要按照ages列表进行排序,则可以使用以下代码:
sorted_list = sorted(zipped, key=lambda x: x[1])
这里,我们使用了lambda函数,以取得元组中的第二项age,并对元组按照age从小到大进行排序。
在排序完成后,我们可以使用zip()函数进行解包:
sorted_names, sorted_ages = zip(*sorted_list)
print(sorted_names)
# Output: ('Mike', 'Tom', 'Jerry', 'Jack')
print(sorted_ages)
# Output: (20, 25, 30, 35)
使用zip()和sorted()函数的结合使用可轻松按照另一个Python列表的值对您的列表进行排序,而无需重新组织列表。 请记住使用lambda函数来指定应排序的另一个列表中的值,并使用zip()函数对结果进行解包。