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抓取京东图书评论数据
Aug 31 Python
python版本五子棋的实现代码
Dec 11 Python
Python设计模式之命令模式原理与用法实例分析
Jan 11 Python
在python中画正态分布图像的实例
Jul 08 Python
python版百度语音识别功能
Jul 09 Python
Python中模块(Module)和包(Package)的区别详解
Aug 07 Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 Python
Python 实现Image和Ndarray互相转换
Feb 19 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
Sep 03 Python
Python之京东商品秒杀的实现示例
Jan 06 Python
Python 批量下载阴阳师网站壁纸
May 19 Python
详细介绍python操作RabbitMq
Apr 12 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中执行系统外部命令
2006/10/09 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
JavaScript中的类继承
2010/11/25 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
javascript中的Function.prototye.bind
2015/06/25 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
Python原始字符串(raw strings)用法实例
2014/10/13 Python
Python版微信红包分配算法
2015/05/04 Python
Python简单实现enum功能的方法
2016/04/25 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
Django xadmin开启搜索功能的实现
2019/11/15 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
HTML5 Canvas绘制文本及图片的基础教程
2016/03/14 HTML / CSS
html5使用canvas画三角形
2014/12/15 HTML / CSS
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
英国莱斯特松木橡木家具网上商店:Choice Furniture Superstore
2019/07/05 全球购物
大专生自我鉴定范文
2013/10/01 职场文书
太太口服液广告词
2014/03/20 职场文书
表彰大会策划方案
2014/05/13 职场文书
工作年限证明模板
2015/06/15 职场文书
解决Golang中goroutine执行速度的问题
2021/05/02 Golang
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript
Java使用Unsafe类的示例详解
2021/09/25 Java/Android