python 日期排序的实例代码


Posted in Python onJuly 11, 2019

问题1:如果日期中有千年以前的情况(没法用格式化函数),如('2010-11-23','1989-3-7','2010-1-5','978-12-1','2010-2-4')参照方法1

问题2:如果日期中没有千年以前的情况,做法就很多了。参照方法2和方法3

# -*- coding: utf-8 -*-
import time
from operator import itemgetter
arr=('2010-11-23','1989-3-7','2010-1-5','978-12-1','2010-2-4')
def date_sort1(x):
  ls=list(x)
  #用了冒泡排序来排序,其他方法效果一样
  for j in range(len(ls)-1):
    for i in range(len(ls)-j-1):
      lower=ls[i].split('-')
      upper=ls[i+1].split('-')    
      for s in range(3):
        if int(lower[s])>int(upper[s]):        
          ls[i],ls[i+1]=ls[i+1],ls[i]
          break
        elif int(lower[s])<int(upper[s]):
          break
  ar=tuple(ls)
  return ar 
ar=('2010-11-23','1989-3-7','2010-2-4','2010-1-5')
def date_sort2(x):
  ls=list(x)
  dic={}
  for l in ls:
    #返回用秒数来表示时间的浮点数
    dic[l]=time.mktime(time.strptime(l, '%Y-%m-%d'))
  dic=sorted(dic.iteritems(), key=itemgetter(1))
  sorted_items=[keys[0] for keys in dic]
  '''
  items=dic.items() 
  backitems=[[v[1],v[0]] for v in items] 
  backitems.sort() 
  sorted_items=[keys[1] for keys in backitems] 
  '''
  '''
  items=dic.items() 
  backitems=[[v[0],v[1]] for v in items] 
  backitems=sorted(backitems, key=lambda x : x[1])  
  sorted_items=[keys[0] for keys in backitems] 
  '''
  return tuple(sorted_items)
import datetime
def date_sort3(x):
  ls=list(x)
  #用了冒泡排序来排序,其他方法效果一样
  for j in range(len(ls)-1):
    for i in range(len(ls)-j-1):
      lower=datetime.datetime.strptime(ls[i], '%Y-%m-%d')
      upper=datetime.datetime.strptime(ls[i+1], '%Y-%m-%d')
      if lower>upper:
        ls[i],ls[i+1]=ls[i+1],ls[i]
  return tuple(ls)
print date_sort1(arr)     
print date_sort2(ar)
print date_sort3(ar)

运行结果:

('978-12-1', '1989-3-7', '2010-1-5', '2010-2-4', '2010-11-23')
('1989-3-7', '2010-1-5', '2010-2-4', '2010-11-23')
('1989-3-7', '2010-1-5', '2010-2-4', '2010-11-23')

正则表达式同样可以处理这类问题,下面是正则表达式的解决方案。

#利用正则表达式
import re
data = ['2010-11-23','1989-3-7','2010-1-5','978-12-1','2010-2-4']
patt = '(\d+)-(\d+)-(\d+)'
  #交换排序
for i in range(len(data)-1):
  for x in range(i+1, len(data)):
    j = 1
    while j<4:
      lower = re.match(patt, data[i]).group(j)
      upper = re.match(patt, data[x]).group(j)
      #print lower,upper
      if int(lower) < int(upper):
        j = 4
      elif int(lower) == int(upper):
        j += 1
      else:
        data[i],data[x] = data[x],data[i]
        j = 4
print data

总结

以上所述是小编给大家介绍的python 日期排序的实例代码 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python实现从web抓取文档的方法
Sep 26 Python
python smtplib模块发送SSL/TLS安全邮件实例
Apr 08 Python
编写Python脚本抓取网络小说来制作自己的阅读器
Aug 20 Python
python开发之tkinter实现图形随鼠标移动的方法
Nov 11 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
pycharm 在windows上编辑代码用linux执行配置的方法
Oct 27 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
Python 函数绘图及函数图像微分与积分
Nov 20 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
Feb 21 Python
Python之Django自动实现html代码(下拉框,数据选择)
Mar 13 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
Apr 24 Python
python 如何实现遗传算法
Sep 22 Python
Python qqbot 实现qq机器人的示例代码
Jul 11 #Python
python的一些加密方法及python 加密模块
Jul 11 #Python
kali中python版本的切换方法
Jul 11 #Python
python按比例随机切分数据的实现
Jul 11 #Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 #Python
Python循环结构的应用场景详解
Jul 11 #Python
python列表,字典,元组简单用法示例
Jul 11 #Python
You might like
PHP的FTP学习(一)[转自奥索]
2006/10/09 PHP
几个php应用技巧
2008/03/27 PHP
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
PHP中的use关键字概述
2014/07/23 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
PHP实现阿里大鱼短信验证的实例代码
2017/07/10 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
删除条目时弹出的确认对话框
2014/06/05 Javascript
基于jQuery创建鼠标悬停效果的方法
2015/03/07 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
使用javascript函数编写简单银行取钱存钱流程
2018/05/26 Javascript
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
python实现简单聊天室功能 可以私聊
2019/07/12 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
Django serializer优化类视图的实现示例
2020/07/16 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
娱乐节目策划方案
2014/06/10 职场文书
校本教研活动总结
2014/07/01 职场文书
2014年库房工作总结
2014/11/26 职场文书
工作会议通知
2015/04/15 职场文书
护士2015年终工作总结
2015/04/29 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
年终工作总结范文
2019/06/20 职场文书
给numpy.array增加维度的超简单方法
2021/06/02 Python
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers