Python数据结构与算法(6)---OrderedDict

简介: Python数据结构与算法(6)---OrderedDict

前言


既然上一篇博文学习了namedtuple转换为OrderedDict。那么本篇博文就直接讲解OrderedDict数据结构的用法。


初始OrderedDict


OrderedDict顾名思义也是一个字典,不过它是字典的子类。相对于普通的字典,它可以记住其内容增加的顺序。


我们来看看普通字典的创建于OrderedDict字典的创建方式对比:

import collections
print("普通Dict:")
a = {}
a['a'] = 'A'
a['b'] = 'B'
a['c'] = 'C'
for key, value in a.items():
    print(key, value)
print("OrderedDict:")
b = collections.OrderedDict()
b['a'] = 'A'
b['b'] = 'B'
b['c'] = 'C'
for key, value in b.items():
    print(key, value)


运行之后,效果如下:


可以看到,普通字典与OrderedDict无非就是构造函数不一样,其他的遍历赋值等几乎都是一摸一样的。那么,OrderedDict字典存在的意义又是什么呢?


相等性


其实,我们开头说了,OrderedDict字典能够记住内容被增加的顺序。这里,我们来做一个有趣的实验,假设有2个普通的字典与2个OrderedDict字典,创建其字典是,仅仅只是赋值顺序不同,我们来看看效果:

import collections
print("普通Dict:")
a = {}
a['a'] = 'A'
a['b'] = 'B'
a['c'] = 'C'
b = {}
b['c'] = 'C'
b['b'] = 'B'
b['a'] = 'A'
print("是否相等:", a == b)
print("OrderedDict:")
c = collections.OrderedDict()
c['a'] = 'A'
c['b'] = 'B'
c['c'] = 'C'
d = collections.OrderedDict()
d['c'] = 'C'
d['b'] = 'B'
d['a'] = 'A'
print("是否相等:", c == d)


运行之后,效果如下:


可以看到,普通字典只要内容相同,不管其添加顺序如何,都能相等。而OrderedDict字典哪怕内容相同,只要顺序不同,都判断为不相等。因为OrderedDict字典检查其相等性时,会查看器内容的增加顺序,普通字典则不会。


move_to_end()


在普通的字典中,如果想移动某个元素到开头或者末尾,往往我们需要借助lambda表达式进行操作。而OrderedDict字典提供了函数move_to_end()可以很方便的将元素移动到开头或者结尾,具体操作如下:

import collections
c = collections.OrderedDict()
c['a'] = 'A'
c['b'] = 'B'
c['c'] = 'C'
print("最初字典顺序")
for key, value in c.items():
    print(key, value)
print('指定元素移动到末尾')
c.move_to_end('b')
for key, value in c.items():
    print(key, value)
print('指定元素移动到开头')
c.move_to_end('b', last=False)
for key, value in c.items():
    print(key, value)


运行之后,效果如下:


可以看到当move_to_end第2个参数为True时,默认移动到末尾;当move_to_end第2个参数为False时,默认移动到开头。

相关文章
|
12天前
|
数据采集 机器学习/深度学习 数据可视化
【优秀python web系统毕设】基于python的全国招聘数据分析可视化系统,包括随机森林算法
本文介绍了一个基于Python的全国招聘数据分析可视化系统,该系统利用数据挖掘技术、随机森林算法和数据可视化技术,从招聘网站抓取数据,进行处理、分析和预测,帮助用户洞察招聘市场,为求职者和企业提供决策支持。
|
12天前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
|
12天前
|
数据采集 算法 数据可视化
基于Python的k-means聚类分析算法的实现与应用,可以用在电商评论、招聘信息等各个领域的文本聚类及指标聚类,效果很好
本文介绍了基于Python实现的k-means聚类分析算法,并通过微博考研话题的数据清洗、聚类数量评估、聚类分析实现与结果可视化等步骤,展示了该算法在文本聚类领域的应用效果。
|
12天前
|
机器学习/深度学习 数据采集 算法
【优秀python算法毕设】基于python时间序列模型分析气温变化趋势的设计与实现
本文介绍了一个基于Python的时间序列模型,用于分析和预测2021-2022年重庆地区的气温变化趋势,通过ARIMA和LSTM模型的应用,揭示了气温的季节性和趋势性变化,并提供了对未来气温变化的预测,有助于气象预报和相关决策制定。
【优秀python算法毕设】基于python时间序列模型分析气温变化趋势的设计与实现
|
6天前
|
编解码 算法 Linux
Linux平台下RTSP|RTMP播放器如何跟python交互投递RGB数据供视觉算法分析
在对接Linux平台的RTSP播放模块时,需将播放数据同时提供给Python进行视觉算法分析。技术实现上,可在播放时通过回调函数获取视频帧数据,并以RGB32格式输出。利用`SetVideoFrameCallBackV2`接口设定缩放后的视频帧回调,以满足算法所需的分辨率。回调函数中,每收到一帧数据即保存为bitmap文件。Python端只需读取指定文件夹中的bitmap文件,即可进行视频数据的分析处理。此方案简单有效,但应注意控制输出的bitmap文件数量以避免内存占用过高。
|
7天前
|
JSON 算法 API
京东以图搜图功能API接口调用算法源码python
京东图搜接口是一款强大工具,通过上传图片即可搜索京东平台上的商品。适合电商平台、比价应用及需商品识别服务的场景。使用前需了解接口功能并注册开发者账号获取Key和Secret;准备好图片的Base64编码和AppKey;生成安全签名后,利用HTTP客户端发送POST请求至接口URL;最后解析JSON响应数据以获取商品信息。
|
6天前
|
算法 Python
python多继承的3C算法是什么?怎么用?
有很多地方都说python多继承的继承顺序,是按照深度遍历的方式,其实python多继承顺序的算法,不是严格意义上的深度遍历,而是基于深度遍历基础上优化出一种叫3C算法
|
8天前
|
数据采集 机器学习/深度学习 算法
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】
|
12天前
|
机器学习/深度学习 数据采集 数据可视化
【优秀python系统毕设】基于Python flask的气象数据可视化系统设计与实现,有LSTM算法预测气温
本文介绍了一个基于Python Flask框架开发的气象数据可视化系统,该系统集成了数据获取、处理、存储、LSTM算法气温预测以及多种数据可视化功能,旨在提高气象数据的利用价值并推动气象领域的发展。
|
12天前
|
数据可视化 算法 前端开发
基于python flask+pyecharts实现的中药数据可视化大屏,实现基于Apriori算法的药品功效关系的关联规则
本文介绍了一个基于Python Flask和Pyecharts实现的中药数据可视化大屏,该系统应用Apriori算法挖掘中药药材与功效之间的关联规则,为中医药学研究提供了数据支持和可视化分析工具。