>我有这个:
list = ["0001.exr", "0003.exr", "0002.dpx", "0001.dpx", "0002.exr", "0003.dpx"]
list.sort()
for line in list:
print (line)
它返回的是:
0001.dpx
0001.exr
0002.dpx
0002.exr
0003.dpx
0003.exr
如何返回此结果?(以一种简单的方式)
0001.dpx
0002.dpx
0003.dpx
0001.exr
0002.exr
0003.exr
只需使用一个键来.sort()
,将"."
之后的内容比之前的内容更重要:
list.sort(key=lambda l: "".join(reversed(l.split(".")))
根据名称进行排序,然后使用 OS 库获取扩展并根据它进行排序(作为键):
list.sort()
list.sort(key=lambda list_item: os.path.splitext(list_item)[-1])
您可以将内置的sorted()
函数与名为sort
的自定义cmp
函数一起使用:
l = ["0001.exr", "0003.exr", "0002.dpx", "0001.dpx", "0002.exr", "0003.dpx"]
def sort(a, b):
if 'dpx' in a and 'exr' in b:
return -1
if float(a.split('.')[0]) < float(b.split('.')[0]):
return -1
return 1
answer = sorted(l, cmp=sort)
print(answer)
输出
['0001.dpx', '0002.dpx', '0003.dpx', '0001.exr', '0002.exr', '0003.exr']
顺便说一句,您不应该通过使用list
作为变量名称来屏蔽内置list()
函数。
list = ["0001.exr", "0003.exr", "0002.dpx", "0001.dpx", "0002.exr", "0003.dpx"]
lst_tuple=[]
for item in list:
lst_tuple.append((item.split('.')[0],item.split('.')[1]))
print sorted(lst_tuple, key=lambda element: (element[1], element[0]))