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

目录
相关文章
|
6天前
|
存储 索引 Python
Python散列类型(1)
【10月更文挑战第9天】
|
11天前
|
计算机视觉 Python
Python实用记录(一):如何将不同类型视频按关键帧提取并保存图片,实现图片裁剪功能
这篇文章介绍了如何使用Python和OpenCV库从不同格式的视频文件中按关键帧提取图片,并展示了图片裁剪的方法。
37 0
|
3天前
|
存储 数据安全/隐私保护 索引
|
10天前
|
Python
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
本篇将详细介绍Python中的字符串类型及其常见操作,包括字符串的定义、转义字符的使用、字符串的连接与格式化、字符串的重复和切片、不可变性、编码与解码以及常用内置方法等。通过本篇学习,用户将掌握字符串的操作技巧,并能灵活处理文本数据。
46 1
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
|
10天前
|
Python
【10月更文挑战第6天】「Mac上学Python 10」基础篇4 - 布尔类型详解
本篇将详细介绍Python中的布尔类型及其应用,包括布尔值、逻辑运算、关系运算符以及零值的概念。布尔类型是Python中的一种基本数据类型,广泛应用于条件判断和逻辑运算中,通过本篇的学习,用户将掌握如何使用布尔类型进行逻辑操作和条件判断。
46 1
【10月更文挑战第6天】「Mac上学Python 10」基础篇4 - 布尔类型详解
|
8天前
|
自然语言处理 Java 数据处理
【速收藏】python字符串操作,你会几个?
【速收藏】python字符串操作,你会几个?
39 7
WK
|
5天前
|
存储 Python
Python内置类型名
Python 内置类型包括数字类型(int, float, complex)、序列类型(str, list, tuple, range)、集合类型(set, frozenset)、映射类型(dict)、布尔类型(bool)、二进制类型(bytes, bytearray, memoryview)、其他类型(NoneType, type, 函数类型等),提供了丰富的数据结构和操作,支持高效编程。
WK
9 2
|
7天前
|
存储 编译器 索引
Python 序列类型(2)
【10月更文挑战第8天】
Python 序列类型(2)
|
8天前
|
存储 C++ 索引
Python 序列类型(1)
【10月更文挑战第8天】
|
11天前
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
23 0