python中OrderedDict有序字典类

OrderedDict 是 Python 标准库 collections 模块中的一个类,它实现了有序字典。与普通字典(dict)不同,OrderedDict 记住了元素被插入时的顺序,因此你可以按照元素被添加的顺序来迭代遍历字典的元素。

OrderedDict 的主要特点如下:

  1. 有序性元素的迭代顺序与它们被添加到字典中的顺序相同
  2. 动态更新:当元素被添加到字典或从字典中删除时,其顺序会相应地更新。
  3. 性能OrderedDict 的性能与普通的 dict 类似,因为它们的底层实现都是基于哈希表

下面是 OrderedDict 的一些基本用法:

from collections import OrderedDict
# 创建一个空的有序字典
od = OrderedDict()
# 添加元素
od['a'] = 1
od['b'] = 2
od['c'] = 3
# 打印字典元素
print(od) # 输出:OrderedDict([('a', 1), ('b', 2), ('c', 3)])
# 访问元素
print(od['a']) # 输出:1
# 按照插入顺序迭代元素
for key, value in od.items():
print(key, value) # 输出:a 1, b 2, c 3
# 在字典的开头插入元素

od['d'] = 0 # 先插入d元素,然后再将其移动到开头

od.move_to_end('d', last=False)  # 将'd'移动到开头,如果last不赋值,一般默认为移动到末尾。

print(od) # 输出:OrderedDict([('d', 0), ('a', 1), ('b', 2), ('c', 3)])
# 删除元素
del od['b']
print(od) # 输出:OrderedDict([('d', 0), ('a', 1), ('c', 3)])
# 移动元素到末尾
od.move_to_end('a')
print(od) # 输出:OrderedDict([('d', 0), ('c', 3), ('a', 1)])

在 LRU 缓存实现中,OrderedDict 特别有用,因为它可以很容易地按照元素的插入顺序来维护一个双向链表。当我们访问一个键时,我们可以使用 move_to_end 方法将其移动到字典的末尾,从而模拟最近访问过的状态。当缓存满了,我们可以简单地删除字典的第一个元素(即最久未使用的元素)。

需要注意的是,虽然 OrderedDict 提供了有序性,但它并不保证线程安全。如果需要在多线程环境下使用 OrderedDict,需要额外的同步机制来确保线程安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/794589.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第四百四十三回

文章目录 1. 概念介绍2. 思路与方法2.1 整体思路2.2 使用方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"自定义Action菜单"相关的内容,本章回中将介绍如何获取屏幕相关参数.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本…

Qtxlsx第三方库的安装和使用

本文仅作为一个记录,安装QtXlsx方便操作excel,主要参考了这篇博文:https://blog.csdn.net/u014779536/article/details/111769792 1,下载安装Perl脚本Strawberry Perl for Windows,默认安装strawberry-perl-5.30.0.1-…

MySQL Payload

常见Payload Version SELECT version Comment SELECT 1 -- commentSELECT 1 # commentSELECT /*comment*/1 Space 0x9 0xa-0xd 0x20 0xa0 Current User SELECT user()SELECT system_user()SELECT current_role() List User SELECT user FROM mysql.user Current Database SELEC…

Vue中的ref与reactive

在 Vue 中,ref 和 reactive 是用于处理响应式数据的两个不同的 API。 1. ref ref 是 Vue 3 中引入的 API,用于创建一个响应式的引用对象。它接收一个初始值作为参数,并返回一个包含了一个 .value 属性的对象。这个 .value 属性持有着实际的值…

程序·人生

诡异之极 2024.03.12 清新环境(股票代码002573)委托卖出 20000股,委托价4.58,当日最高价4.57 2024.03.11 清新环境(股票代码002573)委托卖出 20000股,委托价4.55,当日最高价4.54 …

汉明码检错与纠错的结论(hamming code)

假如一组二进制数据为101,另外一组为111,那么显然把第一组的第二位数据0改成1就可以变成第二组数据111,所以两组数据的汉明距离就为1 简单点说,汉明距离就是一组二进制数据变成另一组数据所需的步骤数(它表示两个相同长…

策略模式图

策略模式 小小的图解 主要的三个角色 Strategy—抽象策略角色ConcreateStrategy—具体策略角色Context—上下文角色 封装了对具体策略的调用可以使用set的依赖注入也可以使用构造方法 核心是上下文角色 只要调用上下文角色就行,实现解耦 策略 工厂 将上下文角…

深入理解MP4视频文件裁剪原理[下下]

深入理解MP4视频文件裁剪原理[上] 深入理解MP4视频文件裁剪原理[中] 深入理解MP4视频文件裁剪原理[下] 深入理解MP4视频文件裁剪原理[下下] 3.22 stco box* stco box记录了每个chunk在MP4文件中的偏移量。如下图24: 图24 这里的offset指的是chunk的起始位置相对于整个MP4文…

Pytoch安装记录

使用pycharm 1、CUDA的安装 官网:CUDA Toolkit Archive | NVIDIA Developer 选择对应的版本 选择对应的版本进行下载: 有3个多G cuda的安装需要注意,如果没有安装vs,则需要选择自定义安装,在自定义的安装中取消 安…

【系统架构师】-系统可靠性分析与设计

1、可靠性与可用性区别 1、系统可靠性:系统在规定时间内及规定的环境下,完成规定功能的能力,即系统无故障运行的概率 2、系统可用性:在某个给定时间点上系统能够按照需求执行的概率。 可靠性分为软件、硬件可靠性 2、可靠性指标…

观察者模式 C++

👂 Honey Honey - 孙燕姿 - 单曲 - 网易云音乐 目录 🌼前言 🌼描述 🎂问题 💪解决方案 🈲现实场景 代码 场景1 -- 报纸发行 场景 解释 代码 场景2 -- 气象资料发布 场景3 -- 过红绿灯 &#x…

【200】Java8 调用 Gson2.10 读取 JSON 数组的六种方法。

准备工作 我们先看一下本文例子中的 JSON 文件:cars.json [{"no": "鲁B0001","color": "红色","code": 1},{"no": "鲁B0002","color": "黑色","code": 2},…

视频分块上传Vue3+SpringBoot3+Minio

文章目录 一、简化演示分块上传、合并分块断点续传秒传 二、更详细的逻辑和细节问题可能存在的隐患 三、代码示例前端代码后端代码 一、简化演示 分块上传、合并分块 前端将完整的视频文件分割成多份文件块,依次上传到后端,后端将其保存到文件系统。前…

C++读取.bin二进制文件

C读取.bin二进制文件 在C中,可以使用文件输入/输出流来进行二进制文件的读写操作,方便数据的保存和读写。 //C读取bin二进制文件 int read_bin() {std::ifstream file("data_100.bin", std::ios::in | std::ios::binary);if (file) {// 按照…

【拓扑空间】示例及详解1

例1 度量空间的任意两球形邻域的交集是若干球形邻域的并集 Proof: 任取空间的两个球形邻域、,令 任取,令 球形领域 例2 规定X的子集族,证明是X上的一个拓扑 Proof: 1. 2., (若干个球形邻域的并集都是的元素,元素…

SSM 项目学习(Vue3+ElementPlus+Axios+SSM)

文章目录 1 项目介绍1.1 项目功能/界面 2 项目基础环境搭建2.1 创建项目2.2 项目全局配置 web.xml2.3 SpringMVC 配置2.4 配置 Spring 和 MyBatis , 并完成整合2.5 创建表,使用逆向工程生成 Bean、XxxMapper 和 XxxMapper.xml2.6 注意事项和细节说明 3 实现功能 01-…

Java 开发者必备:JDK 版本详解与选择策略(含安装与验证)

1. JDK 版本 (Oracle Java SE 支持路线图) 数据来源:Oracle Java SE 支持路线图 | 甲骨文中国: https://www.oracle.com/cn/java/technologies/java-se-support-roadmap.html 版本GA DatePremier Support UntilExtended Support Until(限 LTS&#xff09…

虚幻UE5数字孪生蓝图开发教程

一、背景 这几年,智慧城市/智慧交通/智慧水利等飞速发展,骑士特意为大家做了一个这块的学习路线。 二、这是学习大纲 1.给虚幻UE5初学者准备的智慧城市/数字孪生蓝图开发教程 https://www.bilibili.com/video/BV1894y1u78G 2.UE5数字孪生蓝图开发教学…

亚马逊跨境电商平台真人测评和自养号测评有什么区别?

下面来讲一下真人测评和自养号测评的优缺点有哪些 真人测评 优点:权重高,可以有效提升转化率 缺点:市面上的渠道良莠不齐,质量难以保证,且较难选择 真人测评是通过真人的买家在页面留下review的方式来提高权重&…

关于 QSound播放wav音频文件,播放失败“using null output device, none available” 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/137264493 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…