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安装第三方库的3种方法
Jun 21 Python
python列表操作之extend和append的区别实例分析
Jul 28 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
Apr 10 Python
Python对象属性自动更新操作示例
Jun 15 Python
快速排序的四种python实现(推荐)
Apr 03 Python
python按行读取文件并找出其中指定字符串
Aug 08 Python
python+selenium 鼠标事件操作方法
Aug 24 Python
python爬虫添加请求头代码实例
Dec 28 Python
python操作yaml说明
Apr 08 Python
Pandas将列表(List)转换为数据框(Dataframe)
Apr 24 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 Python
python安装sklearn模块的方法详解
Nov 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 第二节 数据类型之数组
2012/04/28 PHP
php日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
在javaScript中关于submit和button的区别介绍
2013/10/20 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
javascript关于继承解析
2016/05/10 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
单行 JS 实现移动端金钱格式的输入规则
2017/05/22 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
vue中v-for循环给标签属性赋值的方法
2018/10/18 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
Python脚本实现代码行数统计代码分享
2015/03/10 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
python实现QQ批量登录功能
2019/06/19 Python
深入了解python中元类的相关知识
2019/08/29 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
法国春天百货官网:Printemps.com
2020/06/29 全球购物
PHP面试题及答案一
2012/06/18 面试题
一套C++笔试题面试题
2012/06/06 面试题
工厂门卫岗位职责
2013/11/25 职场文书
医学实习生自我鉴定
2013/12/12 职场文书
应用数学专业求职信
2014/03/14 职场文书
员工试用期考核自我鉴定
2014/04/13 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
无罪辩护词范文
2015/05/21 职场文书