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多线程操作实例
Nov 21 Python
使用graphics.py实现2048小游戏
Mar 10 Python
Python实现简单的多任务mysql转xml的方法
Feb 08 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
python 中if else 语句的作用及示例代码
Mar 05 Python
python中pip的安装与使用教程
Aug 10 Python
selenium+python自动化测试之页面元素定位
Jan 23 Python
django-allauth入门学习和使用详解
Jul 03 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
python防止随意修改类属性的实现方法
Aug 21 Python
python selenium实现发送带附件的邮件代码实例
Dec 10 Python
Python ckeditor富文本编辑器代码实例解析
Jun 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操作xml代码
2010/06/17 PHP
PHP Error与Logging函数的深入理解
2013/06/03 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
PHP获取二维数组中某一列的值集合
2015/12/25 PHP
PHP之header函数详解
2021/03/02 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
使用angular写一个hello world
2015/01/23 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
Vue父子组件之间的通信实例详解
2018/09/28 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
Python中的pass语句使用方法讲解
2015/05/14 Python
Python中的函数作用域
2018/05/07 Python
Python内存读写操作示例
2018/07/18 Python
python实现最大子序和(分治+动态规划)
2019/07/05 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
如何查询Oracle数据库中已经创建的索引
2013/10/11 面试题
网上商城创业计划书范文
2014/01/31 职场文书
《音乐之都维也纳》教学反思
2014/04/16 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书