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 相关文章推荐
记录Django开发心得
Jul 16 Python
Python简单实现安全开关文件的两种方式
Sep 19 Python
Python 自动化表单提交实例代码
Jun 08 Python
Python排序搜索基本算法之冒泡排序实例分析
Dec 09 Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
Python拼接微信好友头像大图的实现方法
Aug 01 Python
python+unittest+requests实现接口自动化的方法
Nov 29 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
Python判断对象是否为文件对象(file object)的三种方法示例
Apr 26 Python
计算机二级python学习教程(1) 教大家如何学习python
May 16 Python
python实现一行输入多个值和一行输出多个值的例子
Jul 16 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 批量删除数据的方法分析
2009/10/30 PHP
PHP 读取和修改大文件的某行内容的代码
2009/10/30 PHP
php addslashes和mysql_real_escape_string
2010/01/24 PHP
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
php 模拟get_headers函数的代码示例
2013/04/27 PHP
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
使用jQuery简单实现模拟浏览器搜索功能
2014/12/21 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
[02:23]DOTA2英雄基础教程 幻影长矛手
2013/12/09 DOTA
[02:46]2014DOTA2国际邀请赛 选手为你解读比赛MVP充满梦想
2014/07/09 DOTA
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python中安装Scrapy模块依赖包汇总
2017/07/02 Python
Python进阶学习之特殊方法实例详析
2017/12/01 Python
python实现随机漫步算法
2018/08/27 Python
详解python的argpare和click模块小结
2019/03/31 Python
Pytorch 实现自定义参数层的例子
2019/08/17 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
个人求职简历的自我评价
2013/10/19 职场文书
小学开学标语
2014/07/01 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
2015年党员个人自我评价
2015/03/03 职场文书
会计主管竞聘书
2015/09/15 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
js之ajax文件上传
2021/05/13 Javascript
总结Java对象被序列化的两种方法
2021/06/30 Java/Android