python 日期排序_python 日期排序
转自: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 日期排序相关推荐
- python set 排序_python set 排序_如何在Python中使用sorted()和sort()
点击"蓝字"关注我们 ?"Python基础知识" 大卫·丰达科夫斯基 著 18财税3班 李潇潇 译 日期:2019年5月6日 一. 使用sorted() ...
- python数字排序_python数字排序
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 例如,你想要按照名字来对一列团队成员名单进行排序,或者想按照优先级来对一列项目进 ...
- python比较日期大小_Python日期的处理——datetime模块
本文作者:胡 婧 文字编辑:杨慧琳 技术总编:张学人 好消息!!!爬虫俱乐部将于2019年7月5日至7月8日在武汉举行首期Python编程技术定制培训.本次培训采用理论与案例相结合的方式,旨在帮助 ...
- python中当地时间_Python 日期和时间
Python日期和时间 阅读本文需要4分钟 Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日 ...
- python日期时间_Python日期时间
python日期时间 Python日期时间 (Python datetime) In this post, we will study about how to use the python date ...
- python程序字符串中字符排序_python字符串排序方法
本文以实例形式简述了Python实现字符串排序的方法,是Python程序设计中一个非常实用的技巧.分享给大家供大家参考之用.具体方法如下: 一般情况下,python中对一个字符串排序相当麻烦: 一.p ...
- python列表反向排序_Python 列表排序方法reverse、sort、sorted详解
python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...
- 用python写希尔排序_python希尔排序介绍(实例)
希尔排序介绍 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本,该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个&qu ...
- python十种日期格式_Python 日期格式相关
今天看网上一个说中文日期的问题. 自己试了下.#-*- coding: gb2312 -*- import datetime, time #now = time.strftime('%Y年%m月%d日 ...
最新文章
- pe常用软件_验证U盘PE系统,有几款纯净好用
- WinCE 系统刚启动时运行应用,在应用启动时偶尔出现异常
- Wappo BFS求最短路+路径记录
- oracle 有计划任务吗,oracle计划任务的问题
- 数据库:存储过程_数据科学过程:摘要
- 【Level 08】U07 Mixed Feelings L5 Front page news
- javascript_11-函数面试题
- python线性拟合numpypolyfit_python – 具有适配参数的numpy.polyfit
- 数字图像处理(19): 边缘检测算子(Roberts算子、Prewitt算子、Sobel算子 和 Laplacian算子)
- markdown温习笔记
- 【精华】超详细的Win10安装步骤,菜鸟福音
- python代码实现ASCII码转换
- linux电脑接电视,Ubuntu下如何给通过HDMI连接电视机的计算机强制设置1920*1080分辨率...
- 简单利用Dialog实现Ios从底部弹出的效果,合QQ空间里面的发表说说弹出拍照的效果类似
- 《微SaaS创富周刊》第3期:GPT-3\ChatGPT、Stable Diffusion等AI模型驱动的微SaaS创意盘点
- HT42B534 MSOP-10 USB转TTL芯片只能工作在115200,9600波特率,无法工作在1000000bps波特率
- 2017深圳国际移动医疗健康产业博览会会刊(参展商名录)
- python学习20
- 用JS实现放大镜特效
- 项目将com.thoughtworks.xstream升级到1.4.18遇到的问题:com.thoughtworks.xstream.security.ForbiddenClassException
热门文章
- 论网络安全(观直播后感)
- QT设置相对路径最简单方法
- MATLAB设置坐标轴的位置及方向
- Redis 多线程网络模型
- 用QEMU构建嵌入式LINUX系统
- srsLTE源码学习:RLC,无线链路控制子层抓包rlc_pcap.h,rlc_pcap.cc
- [GitHub]一个简单的网络驱动
- python打印国际象棋规则口诀_python输出国际象棋棋盘的实例分享
- confusion中文_confusion
- 联想万全t260磁盘阵列_联想万全T260G3服务器安装windows2008R2系统