我在对列表进行排序时遇到问题,我的目标是尝试编写一个函数,根据文件的扩展名对文件列表进行排序。例如给定;
["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
参数,然后我可以根据文件的扩展名对文件进行排序?
最佳答案
I fail when I tried to make a key parameter
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(..)
更好,因为您希望从右侧完成拆分。
关于python - 对列表关键参数进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28186899/