【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)]

目录
相关文章
|
1月前
|
Python
Datetime模块应用:Python计算上周周几对应的日期
Datetime模块应用:Python计算上周周几对应的日期
|
9天前
|
搜索推荐 Python
快速排序的 Python 实践:从原理到优化,打造你的排序利器!
本文介绍了 Python 中的快速排序算法,从基本原理、实现代码到优化方法进行了详细探讨。快速排序采用分治策略,通过选择基准元素将数组分为两部分,递归排序。文章还对比了快速排序与冒泡排序的性能,展示了优化前后快速排序的差异。通过这些分析,帮助读者理解快速排序的优势及优化的重要性,从而在实际应用中选择合适的排序算法和优化策略,提升程序性能。
23 1
|
1月前
|
Python
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
本篇将详细介绍Python中的字符串类型及其常见操作,包括字符串的定义、转义字符的使用、字符串的连接与格式化、字符串的重复和切片、不可变性、编码与解码以及常用内置方法等。通过本篇学习,用户将掌握字符串的操作技巧,并能灵活处理文本数据。
53 1
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
|
1月前
|
自然语言处理 Java 数据处理
【速收藏】python字符串操作,你会几个?
【速收藏】python字符串操作,你会几个?
55 7
|
1月前
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
31 0
|
1月前
|
存储 自然语言处理 数据库
Python字典操作实现文章敏感词检索
Python字典操作实现文章敏感词检索
|
1月前
|
存储 JSON 数据处理
分析、总结Python使用列表、元组、字典的场景
分析、总结Python使用列表、元组、字典的场景
|
1月前
|
存储 Java Serverless
【Python】字典
【Python】字典
27 0
|
1月前
|
存储 算法 搜索推荐
算法进阶之路:Python 归并排序深度剖析,让数据排序变得艺术起来!
算法进阶之路:Python 归并排序深度剖析,让数据排序变得艺术起来!
70 0
|
1月前
|
Python
Python操作:字符串--列表--元组--字典--运算符 (一)
Python操作:字符串--列表--元组--字典--运算符 (一)