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 相关文章推荐
pymongo给mongodb创建索引的简单实现方法
May 06 Python
深入解析Python中的urllib2模块
Nov 13 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
Jul 04 Python
Python 2/3下处理cjk编码的zip文件的方法
Apr 26 Python
Python中的pathlib.Path为什么不继承str详解
Jun 23 Python
python实现微信自动回复机器人功能
Jul 11 Python
Python程序暂停的正常处理方法
Nov 07 Python
Django关于admin的使用技巧和知识点
Feb 10 Python
python中提高pip install速度
Feb 14 Python
解决windows下python3使用multiprocessing.Pool出现的问题
Apr 08 Python
python如何更新包
Jun 11 Python
Python3实现英文字母转换哥特式字体实例代码
Sep 01 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
这部好评如潮的动漫 知名梗频出 但是画风劝退很多人
2020/03/08 日漫
PHP实现文件安全下载
2006/10/09 PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
用ADODB来让PHP操作ACCESS数据库的方法
2006/12/31 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
Prototype Number对象 学习
2009/07/19 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
JavaScript里四舍五入函数round用法实例
2015/04/06 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
JS非空验证及邮箱验证的实例
2017/08/11 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[01:03:50]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第二场 2月7日
2021/03/11 DOTA
Python实现的多线程端口扫描工具分享
2015/01/21 Python
python将字符串转换成数组的方法
2015/04/29 Python
在Python中处理XML的教程
2015/04/29 Python
python通过ftplib登录到ftp服务器的方法
2015/05/08 Python
Python实现简单http服务器
2018/04/12 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
高中自我鉴定
2013/12/20 职场文书
科研先进个人典型材料
2014/01/31 职场文书
中青班党性分析材料
2014/02/16 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
500字作文之周记
2019/12/13 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
Win11 Build 22000.51版本文件资源管理器“命令栏”和上下文菜单有什么新变化?
2021/11/21 数码科技