鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: fan1993423

[已解决]如何对字典里的值是列表按照一定规定排序

[复制链接]
 楼主| 发表于 2018-11-21 17:41:46 | 显示全部楼层
塔利班 发表于 2018-11-21 17:40
不是字符串,本身是个OrderDict类
是给他字符串化进行的处理

对,刚才天圆大佬将其字典化就解决了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-21 17:44:50 | 显示全部楼层
fan1993423 发表于 2018-11-21 17:40
同问塔利班大佬,上楼问题有办法解决吗?

如果是分离的年月日时分秒可以,你这时间结果字符串是被格式化的,只能拆分玩了,
可以考虑用正则捕获
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-21 17:46:15 | 显示全部楼层
fan1993423 发表于 2018-11-21 17:41
对,刚才天圆大佬将其字典化就解决了

嗯。我也是刚学到,之前还对字典顺序不把握,可能是和集合联想到一起去了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-21 17:54:39 | 显示全部楼层
塔利班 发表于 2018-11-21 17:46
嗯。我也是刚学到,之前还对字典顺序不把握,可能是和集合联想到一起去了

嗯,这个平台就是好,可以让大家相互借鉴代码,相互学习进步。不然我有些问题还不知道上哪问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-21 17:55:29 | 显示全部楼层
塔利班 发表于 2018-11-21 17:44
如果是分离的年月日时分秒可以,你这时间结果字符串是被格式化的,只能拆分玩了,
可以考虑用正则捕获

看来只能这样了,就是有点繁琐了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-21 20:48:29 | 显示全部楼层
fan1993423 发表于 2018-11-21 17:38
嗯,大佬完美解决了我的问题,我还有个问题就一起问了,就是有些时候要对时间排序 而格式是这样的
2018 ...

用正则表达式就可以了
def str2datetime(s):
        import re
        from datetime import datetime
        pat=re.compile('[-:/,\s]')
        r=list(map(int,pat.split(s)))
        return datetime(*r)

d1=str2datetime('2018-7-14 14:05:43')
d2=str2datetime('2018-10-9 07:15:20')
print(d1>d2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-21 21:34:33 | 显示全部楼层
import time

# 一般来说,时间都是用时间戳来比较
# 但格式化时间没有直接转换成时间戳的方法
# 但是可以使用格式化时间 => 结构化时间 => 时间戳的方法
change_time = lambda x: time.mktime(time.strptime(x, '%Y-%m-%d %X'))

t1 = '2018-7-14 14:05:43'
t2 = '2018-10-9 07:15:20'

t1 = change_time(t1)
t2 = change_time(t2)

print(t1)
print(t2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-21 22:03:51 | 显示全部楼层

谢谢,你这个思路不错。不过我发现用re.findall('\d+',t)的话直接把时间转化成了列表['2018', '4', '15', '14', '55', '01'],然后几个列表的话好像会自动按照第一个数大小比,如果相同就按照第二个数比,就自动达到了我想要的效果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-21 22:13:18 | 显示全部楼层
喜欢吃菠菜 发表于 2018-11-21 20:48
用正则表达式就可以了

谢谢,直接用re.findall('\d+')转化成只含数字的列表,然后会自动挨个比较大小
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-21 22:17:46 | 显示全部楼层
@塔利班大佬,天圆大佬回答的不错,最优答案只能给一个,这回就给天圆大佬了哈,塔利班大佬这次对不住了哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-11 10:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表