我在排序列表时遇到问题,我的目标是尝试编写一个函数,根据文件的扩展名对文件列表进行排序。例如给出;
["a.c","a.py","b.py","bar.txt","foo.txt","x.c"]
期望的输出是;
["a.c","x.c","a.py","b.py","bar.txt","foo.txt"]
当我尝试制作key
参数时,我失败了,我无法创建算法。我首先尝试split()
每个文件,例如;
def sort_file(lst):
second_list = []
for x in lst:
t = x.split(".")
second_list.append(t[1])
second_list.sort()
但我现在不知道该怎么做,我如何将这个排序second_list
作为key
参数,然后我可以根据文件的扩展名对文件进行排序?
答案 0 :(得分:2)
当我尝试制作关键参数时,我失败了
key
参数接受一个函数(可调用,而不是),当给定列表项作为输入时,它返回要比较的对象。在您的情况下,x.split(".")[1]
是要比较的对象。看看Python's wiki entry for sorting in this fashion
以下内容适用于您。
>>> a = ["a.c","a.py","b.py","bar.txt","foo.txt","x.c"]
>>> sorted(a, key=lambda x: x.rsplit(".", 1)[1])
['a.c', 'x.c', 'a.py', 'b.py', 'bar.txt', 'foo.txt']
正如@TanveerAlam所说,使用rsplit(..)
会更好,因为您希望从右侧完成拆分。