转自:http://www.cnblogs.com/lkprof/p/3179850.html,感谢分享~

问题1:如果日期中有千年以前的情况(没法用格式化函数),如('2010-11-23','1989-3-7','2010-1-5','978-12-1','2010-2-4')参照方法1

问题2:如果日期中没有千年以前的情况,做法就很多了。参照方法2和方法3

1 # -*- coding: utf-8 -*-

2 import time

3 from operator import itemgetter

4 arr=('2010-11-23','1989-3-7','2010-1-5','978-12-1','2010-2-4')

5 def date_sort1(x):

6 ls=list(x)

7 #用了冒泡排序来排序,其他方法效果一样

8 for j in range(len(ls)-1):

9 for i in range(len(ls)-j-1):

10 lower=ls[i].split('-')

11 upper=ls[i+1].split('-')

12 for s in range(3):

13 if int(lower[s])>int(upper[s]):

14 ls[i],ls[i+1]=ls[i+1],ls[i]

15 break

16 elif int(lower[s])

17 break

18 ar=tuple(ls)

19 return ar

20 ar=('2010-11-23','1989-3-7','2010-2-4','2010-1-5')

21 def date_sort2(x):

22 ls=list(x)

23 dic={}

24 for l in ls:

25 #返回用秒数来表示时间的浮点数

26 dic[l]=time.mktime(time.strptime(l, '%Y-%m-%d'))

27

28 dic=sorted(dic.iteritems(), key=itemgetter(1))

29 sorted_items=[keys[0] for keys in dic]

30 '''

31 items=dic.items()

32 backitems=[[v[1],v[0]] for v in items]

33 backitems.sort()

34 sorted_items=[keys[1] for keys in backitems]

35 '''

36 '''

37 items=dic.items()

38 backitems=[[v[0],v[1]] for v in items]

39 backitems=sorted(backitems, key=lambda x : x[1])

40 sorted_items=[keys[0] for keys in backitems]

41 '''

42 return tuple(sorted_items)

43 import datetime

44 def date_sort3(x):

45 ls=list(x)

46 #用了冒泡排序来排序,其他方法效果一样

47 for j in range(len(ls)-1):

48 for i in range(len(ls)-j-1):

49 lower=datetime.datetime.strptime(ls[i], '%Y-%m-%d')

50 upper=datetime.datetime.strptime(ls[i+1], '%Y-%m-%d')

51 if lower>upper:

52 ls[i],ls[i+1]=ls[i+1],ls[i]

53 return tuple(ls)

54 print date_sort1(arr)

55 print date_sort2(ar)

56 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')

正则表达式同样可以处理这类问题,下面是正则表达式的解决方案。

1 #利用正则表达式

2 import re

3

4 data = ['2010-11-23','1989-3-7','2010-1-5','978-12-1','2010-2-4']

5 patt = '(\d+)-(\d+)-(\d+)'

6 #交换排序

7 for i in range(len(data)-1):

8 for x in range(i+1, len(data)):

9 j = 1

10 while j<4:

11 lower = re.match(patt, data[i]).group(j)

12 upper = re.match(patt, data[x]).group(j)

13 #print lower,upper

14 if int(lower) < int(upper):

15 j = 4

16 elif int(lower) == int(upper):

17 j += 1

18 else:

19 data[i],data[x] = data[x],data[i]

20 j = 4

21 print data

python 日期排序_python 日期排序相关推荐

  1. python set 排序_python set 排序_如何在Python中使用sorted()和sort()

    点击"蓝字"关注我们 ?"Python基础知识" 大卫·丰达科夫斯基  著 18财税3班 李潇潇    译 日期:2019年5月6日 一. 使用sorted() ...

  2. python数字排序_python数字排序

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 例如,你想要按照名字来对一列团队成员名单进行排序,或者想按照优先级来对一列项目进 ...

  3. python比较日期大小_Python日期的处理——datetime模块

    本文作者:胡   婧 文字编辑:杨慧琳 技术总编:张学人 好消息!!!爬虫俱乐部将于2019年7月5日至7月8日在武汉举行首期Python编程技术定制培训.本次培训采用理论与案例相结合的方式,旨在帮助 ...

  4. python中当地时间_Python 日期和时间

    Python日期和时间 阅读本文需要4分钟 Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日 ...

  5. python日期时间_Python日期时间

    python日期时间 Python日期时间 (Python datetime) In this post, we will study about how to use the python date ...

  6. python程序字符串中字符排序_python字符串排序方法

    本文以实例形式简述了Python实现字符串排序的方法,是Python程序设计中一个非常实用的技巧.分享给大家供大家参考之用.具体方法如下: 一般情况下,python中对一个字符串排序相当麻烦: 一.p ...

  7. python列表反向排序_Python 列表排序方法reverse、sort、sorted详解

    python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...

  8. 用python写希尔排序_python希尔排序介绍(实例)

    希尔排序介绍 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本,该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个&qu ...

  9. python十种日期格式_Python 日期格式相关

    今天看网上一个说中文日期的问题. 自己试了下.#-*- coding: gb2312 -*- import datetime, time #now = time.strftime('%Y年%m月%d日 ...

最新文章

  1. pe常用软件_验证U盘PE系统,有几款纯净好用
  2. WinCE 系统刚启动时运行应用,在应用启动时偶尔出现异常
  3. Wappo BFS求最短路+路径记录
  4. oracle 有计划任务吗,oracle计划任务的问题
  5. 数据库:存储过程_数据科学过程:摘要
  6. 【Level 08】U07 Mixed Feelings L5 Front page news
  7. javascript_11-函数面试题
  8. python线性拟合numpypolyfit_python – 具有适配参数的numpy.polyfit
  9. 数字图像处理(19): 边缘检测算子(Roberts算子、Prewitt算子、Sobel算子 和 Laplacian算子)
  10. markdown温习笔记
  11. 【精华】超详细的Win10安装步骤,菜鸟福音
  12. python代码实现ASCII码转换
  13. linux电脑接电视,Ubuntu下如何给通过HDMI连接电视机的计算机强制设置1920*1080分辨率...
  14. 简单利用Dialog实现Ios从底部弹出的效果,合QQ空间里面的发表说说弹出拍照的效果类似
  15. 《微SaaS创富周刊》第3期:GPT-3\ChatGPT、Stable Diffusion等AI模型驱动的微SaaS创意盘点
  16. HT42B534 MSOP-10 USB转TTL芯片只能工作在115200,9600波特率,无法工作在1000000bps波特率
  17. 2017深圳国际移动医疗健康产业博览会会刊(参展商名录)
  18. python学习20
  19. 用JS实现放大镜特效
  20. 项目将com.thoughtworks.xstream升级到1.4.18遇到的问题:com.thoughtworks.xstream.security.ForbiddenClassException

热门文章

  1. 论网络安全(观直播后感)
  2. QT设置相对路径最简单方法
  3. MATLAB设置坐标轴的位置及方向
  4. Redis 多线程网络模型
  5. 用QEMU构建嵌入式LINUX系统
  6. srsLTE源码学习:RLC,无线链路控制子层抓包rlc_pcap.h,rlc_pcap.cc
  7. [GitHub]一个简单的网络驱动
  8. python打印国际象棋规则口诀_python输出国际象棋棋盘的实例分享
  9. confusion中文_confusion
  10. 联想万全t260磁盘阵列_联想万全T260G3服务器安装windows2008R2系统