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实现在windows服务中新建进程的方法
Jun 30 Python
深入理解python函数递归和生成器
Jun 06 Python
pycharm下查看python的变量类型和变量内容的方法
Jun 26 Python
pandas 按照特定顺序输出的实现代码
Jul 10 Python
浅析Python函数式编程
Oct 06 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
Apr 11 Python
Django重设Admin密码过程解析
Feb 10 Python
Python 中的pygame安装与配置教程详解
Feb 10 Python
解决IDEA 的 plugins 搜不到任何的插件问题
May 04 Python
python字符串拼接+和join的区别详解
Dec 03 Python
Python Selenium库的基本使用教程
Jan 04 Python
浅谈Python基础之列表那些事儿
May 11 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
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
PHP基于curl后台远程登录正方教务系统的方法
2016/10/14 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
寻找网站后台地址的python脚本
2014/09/01 Python
详细介绍Python中的偏函数
2015/04/27 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
python pygame模块编写飞机大战
2018/11/20 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
通过实例解析python and和or使用方法
2020/11/14 Python
JBL英国官网:JBL UK
2018/07/04 全球购物
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
致短跑运动员广播稿
2014/01/09 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
员工薪酬激励方案
2014/06/13 职场文书
三年级上册科学教学计划
2015/01/21 职场文书
红旗渠导游词
2015/02/09 职场文书
2014年个人总结范文
2015/03/09 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
员工工作心得体会
2019/05/07 职场文书
win10清理dns缓存
2022/04/19 数码科技