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 相关文章推荐
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 Python
python计算圆周长、面积、球体体积并画出圆
Apr 08 Python
Python实现Const详解
Jan 27 Python
浅析python中的分片与截断序列
Aug 09 Python
PyQt5每天必学之布局管理
Apr 19 Python
详解Python requests 超时和重试的方法
Dec 18 Python
python实现kmp算法的实例代码
Apr 03 Python
djano一对一、多对多、分页实例代码
Aug 16 Python
python实现智能语音天气预报
Dec 02 Python
pytorch中的卷积和池化计算方式详解
Jan 03 Python
python pygame 愤怒的小鸟游戏示例代码
Feb 25 Python
python lambda的使用详解
Feb 26 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
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
简单的js分页脚本
2009/05/21 Javascript
JavaScript转换农历类实现及调用方法
2013/01/27 Javascript
Javascript中各种trim的实现详细解析
2013/12/10 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
python使用arcpy.mapping模块批量出图
2017/03/06 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
pycharm设置默认的UTF-8编码模式的方法详解
2020/06/01 Python
python能在浏览器能运行吗
2020/06/17 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
物业管理大学生个人的自我评价
2013/10/10 职场文书
软件项目开发计划书
2014/05/01 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
护士医德医风自我评价
2014/09/15 职场文书
英语教师个人工作总结
2015/02/09 职场文书
裁员通知
2015/04/25 职场文书
银行求职信范文
2019/05/13 职场文书
创业计划书之水果店
2019/07/18 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS