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']