加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读