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生成器的使用方法
Nov 21 Python
python调用java的Webservice示例
Mar 10 Python
Python和perl实现批量对目录下电子书文件重命名的代码分享
Nov 21 Python
Python httplib模块使用实例
Apr 11 Python
Python实现命令行通讯录实例教程
Aug 18 Python
Python 3实战爬虫之爬取京东图书的图片详解
Oct 09 Python
TensorFlow 滑动平均的示例代码
Jun 19 Python
pandas将numpy数组写入到csv的实例
Jul 04 Python
django用户登录和注销的实现方法
Jul 16 Python
Python headers请求头如何实现快速添加
Nov 03 Python
django中cookiecutter的使用教程
Dec 03 Python
Python实现生活常识解答机器人
Jun 28 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下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
php去掉字符串的最后一个字符附substr()的用法
2011/03/23 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
JavaScript编写连连看小游戏
2015/07/07 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
JavaScript判断DIV内容是否为空的方法
2016/01/29 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
jQuery替换节点元素的操作方法
2018/03/18 jQuery
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
使用next.js开发网址缩短服务的方法
2020/06/17 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
详谈python read readline readlines的区别
2017/09/22 Python
基于python的列表list和集合set操作
2019/11/24 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
客户经理岗位职责
2013/12/08 职场文书
文艺晚会策划方案
2014/06/11 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
Python+Appium新手教程
2021/04/17 Python
MySQL约束超详解
2021/09/04 MySQL