python – 对列表进行排序不会产生正确的结果
发布时间:2020-12-20 12:24:18 所属栏目:Python 来源:网络整理
导读:这里的 python问题: 我正在运行一个排序函数来按日期排序一些数据,并得到不正确的输出.我准备了我的代码的简短版本,其中包含一些示例数据以显示错误(完整代码无趣,完整的实际数据是专有的). 这是代码: import operatormylist = [['CustomerID_12345','Tran
这里的
python问题:
我正在运行一个排序函数来按日期排序一些数据,并得到不正确的输出.我准备了我的代码的简短版本,其中包含一些示例数据以显示错误(完整代码无趣,完整的实际数据是专有的). 这是代码: import operator mylist = [['CustomerID_12345','TransactionID_1001','12/31/2012'],['CustomerID_12345','TransactionID_1002','3/12/2013'],'TransactionID_1003','1/7/2013'],'TransactionID_1004','12/31/2012']] sorted_list = sorted(mylist,key=operator.itemgetter(2)) print type(mylist) print len(mylist) for i in mylist: print i print "" # just for a line break for convenience for i in sorted_list: print i 输出是: <type 'list'> 4 ['CustomerID_12345','12/31/2012'] ['CustomerID_12345','3/12/2013'] ['CustomerID_12345','1/7/2013'] ['CustomerID_12345','12/31/2012'] ['CustomerID_12345','3/12/2013'] 第一个块是原始数据,第二个块是输出.由于我尝试按日期排序,因此很容易看出排序无法正常工作. 有人可以帮助解释错误并建议如何纠正它吗? 解决方法
这是因为python将它们视为字符串而不是日期.
这是因为’1’小于’2′,小于’3′ 而是尝试将它们作为日期进行比较,使用datetime模块. 这是一个示例: from datetime import datetime your_date = datetime.strptime('1/1/2013',"%m/%d/%Y") my_date = datetime.strptime('12/3/2011',"%m/%d/%Y") print your_date > my_date [Out]: True (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |