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 修改文件指定行的方法
May 15 Python
Python实现控制台输入密码的方法
May 29 Python
Python中数字以及算数运算符的相关使用
Oct 12 Python
教你使用python实现微信每天给女朋友说晚安
Mar 23 Python
django启动uwsgi报错的解决方法
Apr 08 Python
python os用法总结
Jun 08 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
python pygame实现五子棋小游戏
Oct 26 Python
Python跳出多重循环的方法示例
Jul 03 Python
Django之创建引擎索引报错及解决详解
Jul 17 Python
利用Python网络爬虫爬取各大音乐评论的代码
Apr 13 Python
Python作用域和名称空间的详细介绍
Apr 13 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异步执行的常用方式详解
2013/06/03 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
2014/05/23 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
ie focus bug 解决方法
2009/09/03 Javascript
Mootools 1.2 手风琴(Accordion)教程
2009/09/15 Javascript
传智播客学习之java 反射
2009/11/22 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
Python科学画图代码分享
2017/11/29 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
python中pip的安装与使用教程
2018/08/10 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
计算机应届毕业生自荐信范文
2014/02/23 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
2015年教师教学工作总结
2015/04/28 职场文书
追悼会悼词大全
2015/06/23 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书