【Python】对key或values是datetime类型或时间字符串的字典dict排序

简介: 本文提供了针对字典中key为时间字符串或datetime类型时进行排序的解决方案,包括将时间字符串转换为datetime对象排序和直接对datetime类型的key排序的方法。

1 key是时间字符串类型

1.1 问题

当字典的key是时间字符串类型,如下

time_dict = {‘2021-05-18’: 119,
‘2021-06-05’: 119,
‘2020-12-10’: 116,
‘2021-04-19’: 110,
‘2020-12-04’: 108,
‘2021-04-13’: 106,
‘2020-12-08’: 106,
‘2020-09-12’: 103,
‘2021-05-14’: 101,
‘2021-05-08’: 100,
‘2021-01-09’: 99,
‘2020-12-09’: 99,
‘2021-06-25’: 99,
‘2021-05-28’: 99}

想要实现,根据key进行排序。

1.2 解决办法

({k: v 
  for k, v in sorted(
      time_dict.items(),
      key=lambda x: time.datetime.strptime(x[0], '%Y-%m-%d')
      )
})

输出

{‘2020-01-01’: 7,
‘2020-01-02’: 13,
‘2020-01-03’: 6,
‘2020-01-04’: 6,
‘2020-01-05’: 11,
‘2020-01-06’: 8,
‘2020-01-07’: 16,
‘2020-01-08’: 15,
‘2020-01-09’: 21,
‘2020-01-10’: 28,
‘2020-01-11’: 15,
‘2020-01-12’: 17,
‘2020-01-13’: 10,
‘2020-01-14’: 15,
‘2020-01-15’: 7}

2 key是datetime类型

2.1 问题

字典的key是datetime类型的Timestamp,想要对其字典中的时间排序

time_dict = {Timestamp(‘2021-05-18 00:00:00’): 119,
Timestamp(‘2021-06-05 00:00:00’): 119,
Timestamp(‘2020-12-10 00:00:00’): 116,
Timestamp(‘2021-04-19 00:00:00’): 110,
Timestamp(‘2020-12-04 00:00:00’): 108,
Timestamp(‘2020-12-08 00:00:00’): 106,
Timestamp(‘2021-04-13 00:00:00’): 106,
Timestamp(‘2020-09-12 00:00:00’): 103,
Timestamp(‘2021-05-14 00:00:00’): 101,
Timestamp(‘2021-05-08 00:00:00’): 100,
Timestamp(‘2021-05-28 00:00:00’): 99,
Timestamp(‘2021-06-25 00:00:00’): 99,
Timestamp(‘2020-12-09 00:00:00’): 99,
Timestamp(‘2021-01-09 00:00:00’): 99,
Timestamp(‘2021-04-09 00:00:00’): 98,
Timestamp(‘2020-11-06 00:00:00’): 98}

2.2 解决方案

sorted(time_dict.items(),key=lambda x:x[0])

输出

[(Timestamp(‘2020-01-01 00:00:00’), 7),
(Timestamp(‘2020-01-02 00:00:00’), 13),
(Timestamp(‘2020-01-03 00:00:00’), 6),
(Timestamp(‘2020-01-04 00:00:00’), 6),
(Timestamp(‘2020-01-05 00:00:00’), 11),
(Timestamp(‘2020-01-06 00:00:00’), 8),
(Timestamp(‘2020-01-07 00:00:00’), 16),
(Timestamp(‘2020-01-08 00:00:00’), 15),
(Timestamp(‘2020-01-09 00:00:00’), 21),
(Timestamp(‘2020-01-10 00:00:00’), 28),
(Timestamp(‘2020-01-11 00:00:00’), 15),
(Timestamp(‘2020-01-12 00:00:00’), 17),
(Timestamp(‘2020-01-13 00:00:00’), 10),
(Timestamp(‘2020-01-14 00:00:00’), 15),
(Timestamp(‘2020-01-15 00:00:00’), 7)]

目录
相关文章
|
8月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
474 2
|
8月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
606 0
|
9月前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
483 100
|
9月前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
446 102
|
9月前
|
开发者 Python
Python中的f-string:高效字符串格式化的利器
Python中的f-string:高效字符串格式化的利器
630 99
|
9月前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
|
9月前
|
开发者 Python
Python f-strings:更优雅的字符串格式化技巧
Python f-strings:更优雅的字符串格式化技巧
|
9月前
|
开发者 Python
Python f-string:高效字符串格式化的艺术
Python f-string:高效字符串格式化的艺术
|
9月前
|
Python
使用Python f-strings实现更优雅的字符串格式化
使用Python f-strings实现更优雅的字符串格式化
|
8月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
348 4

推荐镜像

更多