我有"季节年"形式的列表:
['Fall 2014', 'Spring 2015', 'Fall 2008', 'Spring 2008']
排序时,列表应如下所示:
['Spring 2015', 'Fall 2014', 'Spring 2008', 'Fall 2008']
因此,排序规则是:
首先按年份排序
按季节排序:'春天'然后'秋季'
我目前有一个名为的函数lcmp,我在我的列表中使用如下:myList.sort(lcmp).
>>> def lcmp(a,b):
... c = a.split()
... d = b.split()
... if(c[1]>d[1]):
... if(c[0]>d[0]):
... return 1
... else:
... return -1
... else:
... if(c[0]>d[0]):
... return 1
... else:
... return 0
...
Run Code Online (Sandbox Code Playgroud)
这适用于按年份排序,但不适用于本季,即使我已指定了这种类型的排序.为什么会这样?
只是-year用来反转按年份排序作为第一个关键字以及seas != "Spring"使用打破关系的结果key=sort_function.
l = ['Fall 2014', 'Spring 2015', 'Fall 2008', 'Spring 2008']
def key(x):
seas,year = x.split()
return -int(year), seas != "Spring"
l.sort(key=key)
Run Code Online (Sandbox Code Playgroud)
即使您使用myList.sort(key=lcmp)传递单个字符串而没有a和b进行拆分,也无法使用您的函数.这也适用于python 2或3.