Python-对2个列表进行排序-包括升序和降序,并作为2个列表返回

Python-对2个列表进行排序-包括升序和降序,并作为2个列表返回,python,list,sorting,tuples,zip,Python,List,Sorting,Tuples,Zip,编写一个包含两个列表的函数。lst1是城镇列表,lst2是城镇的销售编号。函数需要返回这些列表的副本,以便它们都按销售顺序排序(降序,即lst1中的城镇名称也需要根据其在lst2中的销售进行排序)。如果两个或多个城镇具有相同的销售编号,则这些城镇也需要按其名称排序(升序:A-Z) 我的代码: def sort_lists(lst1, lst2): tuples_list = list(zip(lst1, lst2)) sorted_list = sorted(tuples_lis

编写一个包含两个列表的函数。lst1是城镇列表,lst2是城镇的销售编号。函数需要返回这些列表的副本,以便它们都按销售顺序排序(降序,即lst1中的城镇名称也需要根据其在lst2中的销售进行排序)。如果两个或多个城镇具有相同的销售编号,则这些城镇也需要按其名称排序(升序:A-Z)

我的代码:

def sort_lists(lst1, lst2):
    tuples_list = list(zip(lst1, lst2))
    sorted_list = sorted(tuples_list, key = lambda x:(-x[1], x[0]))
    unzipped_list = zip(*sorted_list)
    return (list(unzipped_list))
自动标记器使用的测试数据:

print(list_sorting(['Eugene', 'Phoenix', 'Peoria', 'Ashwood', 'Buxton', 'Crawley', 'Parkdale'], 
[45,23,21,14,8,12,23]))
预期答复:

(['Eugene', 'Parkdale', 'Phoenix', 'Peoria', 'Ashwood', 'Crawley', 'Buxton'], [45, 23, 23, 21, 14, 12, 8])
我的答覆是:

[('Eugene', 'Parkdale', 'Phoenix', 'Peoria', 'Ashwood', 'Crawley', 'Buxton'), (45, 23, 23, 21, 14, 12, 8)]
我在测验中已经把问题弄错了。但是这个代码在下一个问题中使用,所以如果我不能理解它,我也会出错


我的答案排序正确,但我有一个元组列表作为结果。我以为我是在压缩列表,对它们进行排序,然后再解压缩成列表。但是我做错了。

您需要将子元组更改为list,将包含所有项的列表更改为tuple。替换

return (list(unzipped_list))


我试过了,它给了我一个列表。[Eugene',Parkdale',Phoenix',Peoria',Ashwood',Crawley',Buxton',[45,23,23,21,14,12,8]]
return tuple(list(item) for item in unzipped_list)
# output: (['Eugene', 'Parkdale', 'Phoenix', 'Peoria', 'Ashwood', 'Crawley', 'Buxton'], [45, 23, 23, 21, 14, 12, 8])