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利用urllib实现爬取京东网站商品图片的爬虫实例
Aug 24 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
Python爬虫获取图片并下载保存至本地的实例
Jun 01 Python
Django实现支付宝付款和微信支付的示例代码
Jul 25 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
Oct 29 Python
anaconda如何查看并管理python环境
Jul 05 Python
Python socket非阻塞模块应用示例
Sep 12 Python
python 哈希表实现简单python字典代码实例
Sep 27 Python
pytorch1.0中torch.nn.Conv2d用法详解
Jan 10 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
Feb 11 Python
python 如何将office文件转换为PDF
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原理之Session Gc的一个小概率Notice
2011/04/12 PHP
php广告加载类用法实例
2014/09/23 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
javascript基本语法分析说明
2008/06/15 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
Javascript函数的参数
2015/07/16 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
python数据结构之图的实现方法
2015/07/08 Python
全面了解python字符串和字典
2016/07/07 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
python中time、datetime模块的使用
2020/12/14 Python
如何开启linux的ssh服务
2013/06/03 面试题
对祖国的寄语大全
2014/04/11 职场文书
在校实习生求职信
2014/06/18 职场文书
经营理念口号
2014/06/21 职场文书
环保项目建议书
2014/08/26 职场文书
超市开店计划书
2014/09/15 职场文书
2014年污水处理厂工作总结
2014/12/19 职场文书
Python基础详解之邮件处理
2021/04/28 Python
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js