Python - 对 2 个列表进行排序 - 按升序和降序排列并返回为 2 个列表
Python - Sorting 2 Lists - both ascending and descending order and returning back as 2 lists
编写一个接受 2 个列表的函数。 lst1 是城镇列表,lst2 是城镇的销售数字。该函数需要 return 这些列表的副本,以便它们都按销售额排序(降序,即 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)]
我在小测验中已经做错了。但是下一题会用到这段代码,所以如果我想不出来,我也会做错的。
我的答案排序正确,但结果是一个元组列表。我以为我正在压缩列表,对它们进行排序,然后解压缩再次成为列表。但是我做错了。
您需要将子元组更改为列表,并将包含所有项目的列表更改为元组。替换
return (list(unzipped_list))
有
return tuple(list(item) for item in unzipped_list)
# output: (['Eugene', 'Parkdale', 'Phoenix', 'Peoria', 'Ashwood', 'Crawley', 'Buxton'], [45, 23, 23, 21, 14, 12, 8])
编写一个接受 2 个列表的函数。 lst1 是城镇列表,lst2 是城镇的销售数字。该函数需要 return 这些列表的副本,以便它们都按销售额排序(降序,即 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)]
我在小测验中已经做错了。但是下一题会用到这段代码,所以如果我想不出来,我也会做错的。
我的答案排序正确,但结果是一个元组列表。我以为我正在压缩列表,对它们进行排序,然后解压缩再次成为列表。但是我做错了。
您需要将子元组更改为列表,并将包含所有项目的列表更改为元组。替换
return (list(unzipped_list))
有
return tuple(list(item) for item in unzipped_list)
# output: (['Eugene', 'Parkdale', 'Phoenix', 'Peoria', 'Ashwood', 'Crawley', 'Buxton'], [45, 23, 23, 21, 14, 12, 8])