深入理解 Python 中的数据结构: OrderedDict 在 Python 中, 字典 (dict)是一种用于存储键值对的数据结构。 字典 的特点是其键是唯一的,并且访问速度极快。然而,标准 字典 有一个不足之处,即在 Python 3.6之前, 字典 不保证保持插入顺序。为了解决这一问题, Python 的模块引入了类,它不仅拥有 字典 的所有功能,还能够维护键值对的插入顺序。本文将详细介绍的特性、用法以及和标准 字典 的对比。
  • 读取数据创建n个键值对,将其排序后放入有序字典并输出。
  • 有序字典 (OrderedDict)

有序字典和普通的dict基本上是相似的,只有一点不同,那就是有序字典中键值对的顺序会保留插入时的顺序。

  • 创建有序字典

有序字典的创建方法和普通的dict类似,不过由于多了保留顺序的功能,因此在使用可迭代对象创建有序字典时,可以对它先排个序,让创建出来的字典元素也是有序的:

data = [('a',1),('b',3),('c',2)]
#按数据中key值的大小排序
od = collections.OrderedDict(sorted(data,key=lambda s:s[0]))
print(od)
#按数据中value值的大小排序
od = collections.OrderedDict(sorted(data,key=lambda s:s[1]))
print(od)

得到的结果:

OrderedDict([('a', 1), ('b', 3), ('c', 2)])
OrderedDict([('a', 1), ('c', 2), ('b', 3)])

这里使用的sorted函数,它返回对一个可迭代对象排序后的结果,如果可迭代对象的元素不能直接进行比较(比如元素是一个list或tuple等),则需要指定key函数。

这里使用lambda表达式lambda s:s[0]和lambda s:s[1],分别指定key为data中每个元素(tuple类型)的第一个元素和第二个元素。

有序字典提供了一个move_to_end函数,这个函数可以将指定的键值对移动到最前面或者最后面,即最左边或最右边:

dt = collections.OrderedDict()
dt['a'] = 0
dt['b'] = 1
dt['c'] = 2
dt.move_to_end('b',last = False) #将`b`键值对移动到最前方
print(dt)
dt.move_to_end('b',last = True) #将`b`键值对移动到最后方
print(dt)

得到的结果:

OrderedDict([('b', 1), ('a', 0), ('c', 2)])
OrderedDict([('a', 0), ('c', 2), ('b', 1)])

函数功能:

  1. 创建字典
  2. 读取n(n>0)行输入,以每一行的数据为key
  3. 行号(从0开始)为value,建立n对键值对
  4. 将他们按照key排序后,放入一个有序字典
  5. 输出这个有序字典。

测试输入:

预期输出:

OrderedDict([('a', 0), ('b', 2), ('c', 1)])

测试输入:

预期输出:

OrderedDict([('A', 0), ('B', 1), ('C', 3), ('D', 2)])

如注释理解有误,请大佬们多多评论指教!!

很多人认为python中的字典是无序的,因为它是按照hash来存储的。 但是python中有个模块collections(英文,收集、集合),里面自带了一个子类OrderedDict,实现了对字典对象中元素的排序。 请看下面的示例: import collections print "Regular dictionary" d['a']='A' d['b']='B' d['c']='C' for k,v in d.items(): print k,v print "\nOrde

Python实现有序字典的详细介绍

有序字典是一种在Python中常用的数据结构,它与普通字典(无序字典)相比,能够保持键值对的插入顺序。有序字典在许多应用场景中非常有用,例如需要保持数据的插入顺序,并且还需要具备字典的查找和删除操作。我们可以通过遍历有序字典的键值对来访问和打印字典的内容。为了修改有序字典中的值,我们可以使用。的方式向有序字典中插入键值对。注意,插入的顺序与键值对的顺序是一致的。如果想删除有序字典中的某个键值对,可以使用。类,我们可以方便地实现有序字典的功能。然后,我们创建了一个空的有序字典。,可以用于创建有序字典。

与其临渊羡鱼,不如退而结网

【Python】一文详细介绍 OrderedDict 对象

在Python编程的世界中,只是众多强大工具之一。通过深入了解和使用这个数据结构,我们可以编写出更加高效、灵活和可维护的代码。然而,学习永远是一个持续的过程,Python的模块中还有更多宝藏等待我们去发掘。除了Counter和ChainMap等数据结构也各具特色,它们在不同的场景下都能发挥出巨大的作用。因此,我们应该保持对编程的热情和好奇心,不断学习和探索新的知识和技术。同时,我们也要学会举一反三,将所学的知识应用到实际项目中,通过实践来巩固和提升自己的编程能力。

2401_84204413的博客

Python 中的有序字典

OrderedDict是一个字典子类,它会记住键首次插入的顺序。dict()和 OrderedDict()之间的唯一区别是:OrderedDict保留键的插入顺序。常规字典不会跟踪插入顺序,并且迭代它会以任意顺序给出值。相比之下,OrderedDict 会记住插入项目的顺序。输出这是一个字典:一个 1乙2丙3d 4这是一个有序字典:一个 1乙2丙3d 4输出:这是一个字典:一个 1乙2丙3d 4这是一个有序字典:一个 1乙2丙3。

我的博客,不一样的自我表达

python OrderedDict函数详细介绍

做 leetcode146. LRU缓存机制使用到OrderedDict函数,但是往上搜的资料都是只有初始化那篇,因此更新本文。 python中字典Dict是利用hash存储,因为各元素之间没有顺序。OrderedDict听名字就知道他是 按照有序插入顺序存储 的有序字典。除此之外还可根据key, val进行排序。 2、初始化 2.1 先初始化定义一个OrderedDict,然后按照键值对插入,此时dict可以记录插入字典的顺序 import collections d = ...

longshaonihaoa的博客

理解 Python 的有序字典 OrderedDict

在 Python 中,字典(dict)是一种非常常用的数据结构,用于以键值对的形式存储数据。但在Python 3.6 之前,普通字典并不保证键的插入顺序。因此,Python 提供了一个专门的有序版本 —— OrderedDict。下面将深入介绍 OrderedDict 的工作原理、使用方法、与普通字典的区别,以及在实际项目中的应用场景。其中实战内容将实现一个简易 LRU 缓存。

经天纬地,格物致理

python实现字典遍历稳定有序使用collection包OrderedDict

python实现字典遍历稳定有序使用collection包OrderedDict **注意虽然python3.6之后,dict本身也会保留插入的顺序,但是并不是严格保证的; Python3.6中的字典(dict)是有序的,但是该功能被视为您不应该依赖的实现细节; 如果想获得有序字典的严格保证还是得使用OrderDict 在Python 3.5(含)以前,字典是不能保证顺序的,键值对A先插入字典,键值对B后插入字典,但是当你打印字典的Keys列表时,你会发现B可能在A的前面。 但是从Python 3.

data+scenario+science+insight

Oracle19c-集群节点重新添加

Oracle RAC集群在极端情况下,如硬件、主机,集群软件损坏,导致集群节点永久无法使用,需要对集群节点进行修复,删除节点集群信息并重新加入集群,以恢复集群原有的架构。 本文主要讲述一套两节点的Oracle19c RAC集群,节点一orcl01由于主机异常无法正常启动,在对主机进行重装之后,需要将orcl01节点重新加入集群的操作步骤。环境信息: 操作系统:Linux 7 RAC集群:19C 主机节点:orcl0...

sinat_36757755的博客 # 无序字典转为有序字典 foo = OrderedDict(foo) # foo == OrderedDict([('c', 2), ('b', 1)]) foo['a'] = 0 # fo...

Reid_Lv的博客

反无人机技术实战解析:从探测到拦截的全方位防御策略

本文深入解析了反无人机(C-UAS)技术的全链条防御策略。从雷达、无线电频谱、光电等多维度探测技术,到数据融合与威胁评估,再到无线电干扰、导航诱骗及物理拦截等核心拦截手段,系统阐述了如何构建从探测到拦截的实战化防御体系,为关键设施、大型活动等场景提供定制化空域安全解决方案。

weixin_29230649的博客

Python有序字典——OrderedDict

有序字典 (OrderedDict) 有序字典和普通的dict基本上是相似的,只有一点不同,那就是有序字典中键值对的顺序会保留插入时的顺序。 1.创建有序字典 有序字典的创建方法和普通的dict类似,不过由于多了保留顺序的功能,因此在使用可迭代对象创建有序字典时,可以对它先排个序,让创建出来的字典元素也是有序的: data = [('a',1),('b',3),('c',2)] od = coll...

qq_40721900的博客

Tessent ATPG Flow 流程 (代码和注释)

**摘要:Tessent ATPG流程分为五个阶段:1) 环境初始化(加载设计文件、库和扫描链配置);2) DRC规则检查(验证设计可测试性并修复违例);3) ATPG向量生成(设置故障模型并运行引擎优化覆盖率);4) 向量验证与后处理(仿真验证并生成ATE格式文件);5) 进阶操作(多电压域和存储器测试)。流程输出包括测试向量、覆盖率报告和验证日志,支持stuck-at和transition故障模型,使用Tcl脚本控制。关键步骤包含扫描链配置、EDT压缩和覆盖率优化。

QQ_778132974的博客

python 有序字典OrderedDict

python中的字典对象以“键:值”的方式存取数据。使用如下:>>> dict = {'a': 1, 'b': 2, 'c': 3} {'a': 1, 'c': 3, 'b': 2} >>> for k , v in dict.items(): ... print k, v b 2可以看出,在python中字典是无序的。有些情况下,需要有序的字典,怎

果汁华的博客

python字典是无序的吗_Python 有序字典 OrderedDict 和无序字典 Dict

Python 默认的字典是无序的,如果我们需要让他变成有序,很简单,使用有序字典即可,会按照添加顺序自动排序,先添加的在前面,后添加的在后面。Python 中有一个 OrderedDict,刚好就是实现这个功能的,下面进行介绍 Python 有序字典 OrderedDict。一、Python 普通字典 Dictmy_dict = dict()my_dict["name"] = "lowman"my...

weixin_39667509的博客

【LAMMPS学习】八、基础知识(4.5)TIP5P水模型

五点 TIP5P 刚性水模型通过添加两个通常无质量的附加位点 L 来扩展three-point TIP3P model,其中放置与氧原子相关的电荷。这些位点 L 位于距氧原子固定距离处,形成从 HOH 平面旋转 90 度的四面角。因此,这些位点在某种程度上近似于氧的孤对,从而改善了水结构,与four-point TIP4P model相比变得更加“四面体”。

TC3XX - MCAL知识点(十一):WDG EB-tresos配置说明与代码浅析

在AUTOSAR中,看门狗栈实现了三种监控机制:实时监控:用于周期软件的定时监控期限监督:针对非周期软件逻辑监督:用于监督执行顺序的正确性看门狗(WDG)驱动实现AUTOSAR(4.2.2)中规定的看门狗SWS,提供初始化、改变操作模式和设置触发条件(超时)等服务,供看门狗硬件(WDT)用户使用。WDG驱动的用户包括:模式管理模块(用于初始化),WdgM通过Wdglf设置触发条件和驱动运行模式设置。WdgM实施上述监督机制。AUTOSAR扩展触发概念,以支持窗口看门狗模式。

梦想技术家

Python 字典:普通字典(dict)、有序字典(OrderedDict)

Python 的基础数据类型中的字典类型分为:无序字典 与 有序字典 两种类型 1.无序字典(普通字典)dict(): 可以看见,遍历一个普通字典,返回的数据和定义字典时的字段顺序是不一致的 2.有序字典 OrderedDict() 有序字典可以按字典中元素的插入顺序来输出。 有序字典的作用只是记住元素插入顺序并按顺序输出。如果有序字典中的元素一开始就定义好了,后面没有插入元素这一动作,那么遍历有序字典,其输出结果仍然是无序的,因为缺少了有序插入这一条

Drug discovery

python有序字典OrderedDict

python2和python3.6之前的python版本,默认的字典类型都是无序的,若需要用有序的字典,可以用collection包中的OrderedDict来实现 from collections import OrderedDict print("Regular dictionary") d['a']='A' d['b']='B' d['c']='C' print(d) print("Order dictionary") d1 = OrderedDict() d1['a'] = 'A' keep forward, go, go, go

国产上位机软件突围:适配统信UOS/麒麟OS的跨平台开发技术与实践(2026年信创实战指南)

(航天科技集团CTO):“在信创战场上,1ms的延迟意味着1个卫星的控制失效。2026年,C#/.NET MAUI不是选择,而是我们守护卫星的‘生命线’。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。

python 有序字典_python3 OrderedDict类(有序字典)使用方法

创建有序字典import collectionsdic = collections.OrderedDict()dic['k1'] = 'v1'dic['k2'] = 'v2'dic['k3'] = 'v3'print(dic)#输出:OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])clear(清空有序字典)import collecti...

weixin_39636609的博客

XP支持exFAT格式的补丁(中英文)

exFAT(Extended File Allocation Table File System,扩展FAT,即扩展文件分配表)是Microsoft在Windows Embeded 5.0以上(包括Windows CE 5.0、6.0、Windows Mobile5、6、6.1)中引入的一种适合于闪存的文件系统,为了解决FAT32等不支持4G及其更大的文件而推出。对于闪存,NTFS文件系统不适合使用,exFAT更为适用。相对FAT文件系统,exFAT有如下好处:·增强了台式电脑与移动设备的互操作能力 exFAT.gif·单文件大小最大可达16EB(18 446 744 073 709 551 616字节,就是(理论值,16×1024×1024TB),1TB=1024G)·簇大小可高达32MB·采用了剩余空间分配表,剩余空间分配性能改进·同一目录下最大文件数可达65 536个·支持访问控制·支持TFAT采用该文件系统的闪存盘不支持Windows Vista ReadyBoost。Windows Vista SP1与Windows 8支持该文件系统。请注意:exFAT只是一个折中的方案,特别适合于闪存的文件系统。现在超过4GB的U盘格式化时默认是NTFS分区,但是这种格式是很伤U盘的,因为NTFS分区是采用“日志式”的文件系统,需要记录详细的读写操作,肯定会比较伤闪盘芯片,因为要不断读写。下面请看exFAT、NTFS、FAT分区的比较分区格式FAT32NTFSexFAT操作系统Win 95 OSR2之后Win2000之后Win CE 6/Vista SP1/Windows 8最小扇区512bytes512bytes512bytes最大扇区64KB64KB32768KB最大单一文件2bytes-4GB受最大分割容量16EB(理论值)最大格式化容量2TB(但NT内核系统限制为32GB)2TB~256TB(受MBR影响)16EB(理论值)(目前支持到256TB)档案数量4194304无至少可以大于10001.支持非常大的文件和存储设备2.对性能的改进支持3.对未来的创新的可扩展性功能的支持4.添加 Flash 媒体兼容性

python collections.OrderedDict有序字典的使用

detectron2中大量的使用OrderedDict-有序字典,有序字典可以按字典中元素的插入顺序来输出。 python的基础数据类型中的字典类型分为:无序字典与有序字典两种类型。 1、无序字典(普通字典) 遍历一个普通字典,返回的数据和定义字典时的字段顺序是不一致的。 my_dict = dict() my_dict["name"] = "lowman" my_dict["age"] = 26 my_dict["girl"] = "Tailand" my_dict["money"] = 80 alex1801

说说 Python 的有序字典类(OrderedDict)

字典可以将信息关联起来, 但却不记录添加键—值对的顺序。 我们可以使用模块 collections 中的 OrderedDict 类。它拥有字典特性, 而且还记录了键—值对的添加顺序。 from collections import OrderedDict peoples = OrderedDict() peoples['林旭恒'] = '安徽师范大学附属中学' peoples['吴作同...

读万卷书,行万里路 python中字典Dict是利用hash存储,因为各元素之间没有顺序。OrderedDict听名字就知道他是 按照有序插入顺序存储 的有序字典。除此之外还可根据key, val进行排序。 2、初始化 2.1 先初始化定义一个OrderedDict,然后按照键值对插入,此时dict可以记录插入字典的顺序 import collections d = ... **注意虽然python3.6之后,dict本身也会保留插入的顺序,但是并不是严格保证的; Python3.6中的字典(dict)是有序的,但是该功能被视为您不应该依赖的实现细节; 如果想获得有序字典的严格保证还是得使用OrderDict 在Python 3.5(含)以前,字典是不能保证顺序的,键值对A先插入字典,键值对B后插入字典,但是当你打印字典的Keys列表时,你会发现B可能在A的前面。 但是从Python 3. # 无序字典转为有序字典 foo = OrderedDict(foo) # foo == OrderedDict([('c', 2), ('b', 1)]) foo['a'] = 0 # fo... 有序字典和普通的dict基本上是相似的,只有一点不同,那就是有序字典中键值对的顺序会保留插入时的顺序。 1.创建有序字典 有序字典的创建方法和普通的dict类似,不过由于多了保留顺序的功能,因此在使用可迭代对象创建有序字典时,可以对它先排个序,让创建出来的字典元素也是有序的: data = [('a',1),('b',3),('c',2)] od = coll...
python中的字典对象以“键:值”的方式存取数据。使用如下:>>> dict = {'a': 1, 'b': 2, 'c': 3} {'a': 1, 'c': 3, 'b': 2} >>> for k , v in dict.items(): ... print k, v b 2可以看出,在python中字典是无序的。有些情况下,需要有序的字典,怎
python2和python3.6之前的python版本,默认的字典类型都是无序的,若需要用有序的字典,可以用collection包中的OrderedDict来实现 from collections import OrderedDict print("Regular dictionary") d['a']='A' d['b']='B' d['c']='C' print(d) print("Order dictionary") d1 = OrderedDict() d1['a'] = 'A'
exFAT(Extended File Allocation Table File System,扩展FAT,即扩展文件分配表)是Microsoft在Windows Embeded 5.0以上(包括Windows CE 5.0、6.0、Windows Mobile5、6、6.1)中引入的一种适合于闪存的文件系统,为了解决FAT32等不支持4G及其更大的文件而推出。对于闪存,NTFS文件系统不适合使用,exFAT更为适用。相对FAT文件系统,exFAT有如下好处:·增强了台式电脑与移动设备的互操作能力 exFAT.gif·单文件大小最大可达16EB(18 446 744 073 709 551 616字节,就是(理论值,16×1024×1024TB),1TB=1024G)·簇大小可高达32MB·采用了剩余空间分配表,剩余空间分配性能改进·同一目录下最大文件数可达65 536个·支持访问控制·支持TFAT采用该文件系统的闪存盘不支持Windows Vista ReadyBoost。Windows Vista SP1与Windows 8支持该文件系统。请注意:exFAT只是一个折中的方案,特别适合于闪存的文件系统。现在超过4GB的U盘格式化时默认是NTFS分区,但是这种格式是很伤U盘的,因为NTFS分区是采用“日志式”的文件系统,需要记录详细的读写操作,肯定会比较伤闪盘芯片,因为要不断读写。下面请看exFAT、NTFS、FAT分区的比较分区格式FAT32NTFSexFAT操作系统Win 95 OSR2之后Win2000之后Win CE 6/Vista SP1/Windows 8最小扇区512bytes512bytes512bytes最大扇区64KB64KB32768KB最大单一文件2bytes-4GB受最大分割容量16EB(理论值)最大格式化容量2TB(但NT内核系统限制为32GB)2TB~256TB(受MBR影响)16EB(理论值)(目前支持到256TB)档案数量4194304无至少可以大于10001.支持非常大的文件和存储设备2.对性能的改进支持3.对未来的创新的可扩展性功能的支持4.添加 Flash 媒体兼容性
detectron2中大量的使用OrderedDict-有序字典,有序字典可以按字典中元素的插入顺序来输出。 python的基础数据类型中的字典类型分为:无序字典与有序字典两种类型。 1、无序字典(普通字典) 遍历一个普通字典,返回的数据和定义字典时的字段顺序是不一致的。 my_dict = dict() my_dict["name"] = "lowman" my_dict["age"] = 26 my_dict["girl"] = "Tailand" my_dict["money"] = 80
字典可以将信息关联起来, 但却不记录添加键—值对的顺序。 我们可以使用模块 collections 中的 OrderedDict 类。它拥有字典特性, 而且还记录了键—值对的添加顺序。 from collections import OrderedDict peoples = OrderedDict() peoples['林旭恒'] = '安徽师范大学附属中学' peoples['吴作同...