Python字典之collections.OrderedDict

2023-12-24 22:08

本文主要是介绍Python字典之collections.OrderedDict,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.OrderedDict基本用法示例

2.OrderedDict删除元素方法之popitem()

3.OrderedDict删除元素方法之pop()


Python中默认的字典dict是无序的,因为它是按照hash来存储的(Ps:好像从Python3.6开始也变得有序了),但是python中有个模块collections,里面有个子类orderedDict实现了对字典对象中元素的排序,它是有序的。OrderedDict的key会按照插入的顺序排列,不是key本身排序。

1.OrderedDict基本用法示例

简单来看一个示例:

import collectionscache = collections.OrderedDict()
cache["key1"] = {"k1": "v1"}
cache["key3"] = {"k3": "v3"}
cache["key2"] = {"k2": "v2"}print(cache)
cache["key4"] = {"k4": "v4"}
print(cache)

输出结果:

OrderedDict([('key1', {'k1': 'v1'}), ('key3', {'k3': 'v3'}), ('key2', {'k2': 'v2'})])
OrderedDict([('key1', {'k1': 'v1'}), ('key3', {'k3': 'v3'}), ('key2', {'k2': 'v2'}), ('key4', {'k4': 'v4'})])

2.OrderedDict删除元素方法之popitem()

OrderedDict.popitem()可以完成元素的删除操作,有一个可选参数last(默认为True),当last为True时它从OrderedDict中删除最后一个键值对并返回该键值对,当last为False时它从OrderedDict中删除第一个键值对并返回该键值对。这个特性在Python缓存策略设置这块的应用其实还蛮多的。可以参考:Python 缓存机制之functools.lru_cache

last设置为False时

import collectionscache = collections.OrderedDict()
cache["key1"] = {"k1": "v1"}
cache["key2"] = {"k2": "v2"}
cache["key3"] = {"k3": "v3"}print("cache before delete:{}".format(cache))
cache.popitem(last=False)
print("cache after delete:{}".format(cache))

运行结果:

cache before delete:OrderedDict([('key1', {'k1': 'v1'}), ('key2', {'k2': 'v2'}), ('key3', {'k3': 'v3'})])
cache after delete:OrderedDict([('key2', {'k2': 'v2'}), ('key3', {'k3': 'v3'})])

last设置为True时 

import collectionscache = collections.OrderedDict()
cache["key1"] = {"k1": "v1"}
cache["key2"] = {"k2": "v2"}
cache["key3"] = {"k3": "v3"}print("cache before delete:{}".format(cache))
cache.popitem(last=True)
print("cache after delete:{}".format(cache))

 运行结果:

cache before delete:OrderedDict([('key1', {'k1': 'v1'}), ('key2', {'k2': 'v2'}), ('key3', {'k3': 'v3'})])
cache after delete:OrderedDict([('key1', {'k1': 'v1'}), ('key2', {'k2': 'v2'})])

Ps:如果字典已经为空,却调用了此方法,就报出KeyError异常,所以在写代码时需要捕获异常及处理一下。

3.OrderedDict删除元素方法之pop()

字典里面还有另一种常用的删除方法pop(),pop (key[,default]),其中,key是必选参数,必须给出,default是可选参数,可以不给出。如果键值key在字典中存在,删除dict[key],返回 dict[key]的value值。
否则,如有给出default值则返回default值,如果default值没有给出,就会报出KeyError异常。
pop()方法至少接受一个参数,最多接受两个参数。

代码示例如下,尝试删除字典中存在的key(a)和不存在的key(e)

import collectionscache = collections.OrderedDict()
cache["a"] = 1
cache["b"] = 2
cache["c"] = 3
cache["d"] = 4print("[1] cache before delete: {}".format(cache))
# 删除存在的key:a
cache.pop("a")
print("[2] cache after delete: {}".format(cache))
# 删除不存在的key:e
cache.pop("e")
print("[3] cache after delete: {}".format(cache))

输出结果如下:

[1] cache before delete: OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])
[2] cache after delete: OrderedDict([('b', 2), ('c', 3), ('d', 4)])
Traceback (most recent call last):File "/Users/xxxxxxx/demo.py", line 14, in <module>cache.pop("e")
KeyError: 'e'

可以看出,删除不存在的key时会抛出KeyError的异常,这种情况我们可以通过设置default值的方法来避免,示例如下:

示例代码如下:

import collectionscache = collections.OrderedDict()
cache["a"] = 1
cache["b"] = 2
cache["c"] = 3
cache["d"] = 4print("[1] cache before delete: {}".format(cache))
# 删除存在的key:a
cache.pop("a")
print("[2] cache after delete: {}".format(cache))
# 删除不存在的key:e, 设置default默认值
cache.pop("e", None)
print("[3] cache after delete: {}".format(cache))

输出结果如下,可以看出这次删除不存在的key时值没有报错。

[1] cache before delete: OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])
[2] cache after delete: OrderedDict([('b', 2), ('c', 3), ('d', 4)])
[3] cache after delete: OrderedDict([('b', 2), ('c', 3), ('d', 4)])

这篇关于Python字典之collections.OrderedDict的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/533306

相关文章

Python批量调整Word文档中的字体、段落间距及格式

《Python批量调整Word文档中的字体、段落间距及格式》这篇文章主要为大家详细介绍了如何使用Python的docx库来批量处理Word文档,包括设置首行缩进、字体、字号、行间距、段落对齐方式等,需... 目录关键代码一级标题设置  正文设置完整代码运行结果最近关于批处理格式的问题我查了很多资料,但是都没

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

python中列表list切分的实现

《python中列表list切分的实现》列表是Python中最常用的数据结构之一,经常需要对列表进行切分操作,本文主要介绍了python中列表list切分的实现,文中通过示例代码介绍的非常详细,对大家... 目录一、列表切片的基本用法1.1 基本切片操作1.2 切片的负索引1.3 切片的省略二、列表切分的高

基于Python实现一个PDF特殊字体提取工具

《基于Python实现一个PDF特殊字体提取工具》在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析,本文介绍的PDF特殊字体提取器是一款基于Python开发的桌面应用程序感兴趣的... 目录一、应用背景与功能概述二、技术架构与核心组件2.1 技术选型2.2 系统架构三、核心功能实现解析

通过Python脚本批量复制并规范命名视频文件

《通过Python脚本批量复制并规范命名视频文件》本文介绍了如何通过Python脚本批量复制并规范命名视频文件,实现自动补齐数字编号、保留原始文件、智能识别有效文件等功能,听过代码示例介绍的非常详细,... 目录一、问题场景:杂乱的视频文件名二、完整解决方案三、关键技术解析1. 智能路径处理2. 精准文件名

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

Python使用PIL库将PNG图片转换为ICO图标的示例代码

《Python使用PIL库将PNG图片转换为ICO图标的示例代码》在软件开发和网站设计中,ICO图标是一种常用的图像格式,特别适用于应用程序图标、网页收藏夹图标等场景,本文将介绍如何使用Python的... 目录引言准备工作代码解析实践操作结果展示结语引言在软件开发和网站设计中,ICO图标是一种常用的图像

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

使用Python实现表格字段智能去重

《使用Python实现表格字段智能去重》在数据分析和处理过程中,数据清洗是一个至关重要的步骤,其中字段去重是一个常见且关键的任务,下面我们看看如何使用Python进行表格字段智能去重吧... 目录一、引言二、数据重复问题的常见场景与影响三、python在数据清洗中的优势四、基于Python的表格字段智能去重

Python中如何控制小数点精度与对齐方式

《Python中如何控制小数点精度与对齐方式》在Python编程中,数据输出格式化是一个常见的需求,尤其是在涉及到小数点精度和对齐方式时,下面小编就来为大家介绍一下如何在Python中实现这些功能吧... 目录一、控制小数点精度1. 使用 round() 函数2. 使用字符串格式化二、控制对齐方式1. 使用