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程序中操作文件之isatty()方法的使用教程
May 24 Python
Python函数式编程指南(四):生成器详解
Jun 24 Python
Python使用tablib生成excel文件的简单实现方法
Mar 16 Python
Python3.7实现中控考勤机自动连接
Aug 28 Python
学生信息管理系统python版
Oct 17 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
python 字符串常用函数详解
Sep 11 Python
Python基于Tensor FLow的图像处理操作详解
Jan 15 Python
Python os模块常用方法和属性总结
Feb 20 Python
Python多线程通信queue队列用法实例分析
Mar 24 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
Nov 17 Python
python 基于selectors库实现文件上传与下载
Dec 31 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
什么是MVC,好东西啊
2007/05/03 PHP
在PHP中实现Javascript的escape()函数代码
2010/08/08 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
js 方法实现返回多个数据的代码
2009/04/30 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
2010/03/14 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
提示$ is not defined错误分析及解决
2013/04/09 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
nodejs实现的一个简单聊天室功能分享
2014/12/06 NodeJs
JS数组的常见用法实例
2015/02/10 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
2016/08/16 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
Python判断两个对象相等的原理
2017/12/12 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
如何理解transaction事务的概念
2015/05/27 面试题
职工运动会邀请函
2014/02/02 职场文书
祖国在我心中演讲稿400字
2014/05/04 职场文书
幼儿园师德演讲稿
2014/05/06 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
Python实现单例模式的5种方法
2021/06/15 Python