我是一个清单
[['12', '2017/6/10'],
['-2', '2017/5/10'],
['12', '2017/2/10']]
我需要按数字排序第一个元素,按时间排序(或使用给定的函数说明字符串的第二个字母)
答案 0 :(得分:4)
from operator import itemgetter
LIST=[['12', '2017/6/10'],
['-2', '2017/5/10'],
['12', '2017/2/10']]
sorted(LIST, key=itemgetter(0,1))
Out[127]: [['-2', '2017/5/10'], ['12', '2017/2/10'], ['12', '2017/6/10']]
EDIT1抱歉将字符忽略为数字
sorted(LIST, key=lambda x: (int(x[0]), x[1]))
答案 1 :(得分:2)
from datetime import datetime
l = [['12', '2017/6/10'],
['-2', '2017/5/10'],
['12', '2017/2/10']]
l.sort(key=lambda x: (int(x[0]), datetime.strptime(x[1], "%Y/%m/%d")))
print(l)
请注意"%Y/%m/%d"
,看看是否符合您的日期格式。根据您使用的示例,不清楚月份或日期是否到位。
此外,int(x[0])
可能会有一些修改,具体取决于您的数值有多长。
答案 2 :(得分:0)
使用此:
sorted(a, lambda x,y: x[0]<y[0] or x[0]==y[0] and x[1]<y[1])
如果你想在第二个键上做一个特殊的cmp函数,你可以定义一个自定义的cmp函数,例如
def cmp(sa,sb):
return sa[3] < sb[3]
sorted(a, lambda x,y: x[0]<y[0] or x[0]==y[0] and cmp(x[1],y[1]))
答案 3 :(得分:-1)
我认为解决方案是使用'key'参数来定义排序键,使用'cmp'参数来定义函数