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 查找文件夹下所有文件 实现代码
Jul 01 Python
python支持断点续传的多线程下载示例
Jan 16 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
Jun 09 Python
python 实现一个贴吧图片爬虫的示例
Oct 12 Python
基于Python __dict__与dir()的区别详解
Oct 30 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
Linux下python3.7.0安装教程
Jul 30 Python
Opencv+Python 色彩通道拆分及合并的示例
Dec 08 Python
python面向对象法实现图书管理系统
Apr 19 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
Jun 18 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
对tensorflow中的strides参数使用详解
Jan 04 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
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
Extjs中常用表单介绍与应用
2010/06/07 Javascript
IE之动态添加DOM节点触发window.resize事件
2010/07/27 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
2017/01/22 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
微信小程序sessionid不一致问题解决
2019/08/30 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
vue开发中遇到的问题总结
2020/04/07 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
原生js实现分页效果
2020/09/23 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
[54:53]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第二场
2014/05/23 DOTA
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
python实现微信自动回复机器人功能
2019/07/11 Python
python实现上传文件到linux指定目录的方法
2020/01/03 Python
python3实现飞机大战
2020/11/29 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
css3 线性渐变和径向渐变示例附图
2014/04/08 HTML / CSS
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
Charles & Colvard官网:美国莫桑石品牌
2019/06/05 全球购物
最受欢迎的自我评价
2013/12/22 职场文书
前台文员个人求职信范文
2014/01/05 职场文书
《赵州桥》教学反思
2014/02/17 职场文书
公务员处分决定书
2015/06/25 职场文书
Nginx快速入门教程
2021/03/31 Servers