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每次处理固定个数的字符的方法总结
Jan 29 Python
c++生成dll使用python调用dll的方法
Jan 20 Python
总结Python编程中函数的使用要点
Mar 20 Python
Python配置mysql的教程(推荐)
Oct 13 Python
python实现linux下抓包并存库功能
Jul 18 Python
对Python发送带header的http请求方法详解
Jan 02 Python
python中dict使用方法详解
Jul 17 Python
Python实现网页截图(PyQT5)过程解析
Aug 12 Python
python列表推导和生成器表达式知识点总结
Jan 10 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
Apr 20 Python
使用已经得到的keras模型识别自己手写的数字方式
Jun 29 Python
Django 实现图片上传和下载功能
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
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
解析PHP提交后跳转
2013/06/23 PHP
phpQuery占用内存过多的处理方法
2013/11/13 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
2014/11/18 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
关于javascript中的parseInt使用技巧
2009/09/03 Javascript
html+css+js实现xp window界面及有关功能
2013/03/26 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
Javascript原型链和原型的一个误区
2014/10/22 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
用vue写一个日历
2020/11/02 Javascript
python如何实现int函数的方法示例
2018/02/19 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
Python实现结构体代码实例
2020/02/10 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
使用纯 CSS 创作一个脉动 loader效果的源码
2018/09/28 HTML / CSS
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
Oracle快照(snapshot)
2015/03/13 面试题
音乐学院硕士生的自我评价分享
2013/11/01 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
电力安全教育培训心得体会
2016/01/11 职场文书
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python
python获取带有返回值的多线程
2022/05/02 Python
Web应用开发TypeScript使用详解
2022/05/25 Javascript