Python 使用键按月份排序时间戳

Python 使用键按月份排序时间戳,python,python-3.x,sorting,Python,Python 3.x,Sorting,我试图只按月份对“时间戳”进行排序。现在的代码是: arr = ["13-16", "5-15", "9-15", "3-14", "12-19", "11-19", "9'19", "5-14"] arr = sorted(arr, key=lambda str:(str.split("-")[0])) print(arr) 然而,我打印时得到的是: ['11-19', '12-19', '13-16', '3-14', '5-15', '5-14', '9-15', '9-19'] 有人

我试图只按月份对“时间戳”进行排序。现在的代码是:

arr = ["13-16", "5-15", "9-15", "3-14", "12-19", "11-19", "9'19", "5-14"]
arr = sorted(arr, key=lambda str:(str.split("-")[0]))
print(arr)
然而,我打印时得到的是:

['11-19', '12-19', '13-16', '3-14', '5-15', '5-14', '9-15', '9-19']

有人知道Python为什么排序不正确吗?

您需要将月份转换为
int
,否则键将按字母顺序排序为字符串

我还建议您不要丢弃年份,以便将同一月份的日期按明确的顺序进行排序

arr = ["13-16", "5-15", "9-15", "3-14", "12-19", "11-19", "9-19", "5-14"]
arr = sorted(arr, key=lambda s: [int(x) for x in s.split("-")])
#                                ^ cast to an int
print(arr)
输出:

['3-14', '5-14', '5-15', '9-15', '9-19', '11-19', '12-19', '13-16']

@Goldberg,输出
['3-14','5-15','5-14','9-15','9-19','11-19','12-19','13-16']
看起来还可以,但仍然没有正确的顺序,因为正确的输出是
['3-14','5-15','9-15','9-19','11-19','12-19','13-16']
,您可以使用以下代码获得:

基于元组比较的概念:

a=(3,14)

b=(5,14)

c=(5,15)

print(a

print(c>b)#True

print(a>c)#False

»正确的方式(正确的输出) »错误的方式(不正确的输出)
arr = sorted(arr, key=lambda str:( int(str.split("-")[0]), int(str.split("-")[1])))
print(arr)
# ['3-14', '5-14', '5-15', '9-15', '9-19', '11-19', '12-19', '13-16']
arr = sorted(arr, key=lambda str:( int(str.split("-")[0])))
print(arr)
# ['3-14', '5-15', '5-14', '9-15', '9-19', '11-19', '12-19', '13-16']