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时,默认移动到开头。

相关文章
|
2天前
|
算法 开发者 计算机视觉
燃爆全场!Python并查集:数据结构界的网红,让你的代码炫酷无比!
在编程的世界里,总有一些数据结构以其独特的魅力和高效的性能脱颖而出,成为众多开发者追捧的“网红”。今天,我们要介绍的这位明星,就是Python中的并查集(Union-Find)——它不仅在解决特定问题上大放异彩,更以其优雅的设计和强大的功能,让你的代码炫酷无比,燃爆全场!
9 0
|
22小时前
|
存储 算法 安全
Python 加密算法详解与应用
Python 加密算法详解与应用
6 1
|
3天前
|
存储 算法 Python
火箭般的提升!学会Python并查集,让你的算法能力飞跃新高度!
火箭般的提升!学会Python并查集,让你的算法能力飞跃新高度!
12 1
|
13天前
|
存储 索引 Python
Python常用数据结构——集合
Python常用数据结构——集合
32 3
|
13天前
|
存储 数据安全/隐私保护 Python
Python常用数据结构——字典的应用
Python常用数据结构——字典的应用
14 2
|
15天前
|
Python
逆天改命!掌握Python并查集,数据结构难题从此不再是你的痛!
在编程旅程中,遇到棘手的数据结构难题是否让你苦恼?别担心,Python并查集(Union-Find)是你的得力助手。这是一种高效处理不相交集合合并及查询的数据结构,广泛应用于网络连通性、社交网络圈子划分等场景。通过维护每个集合的根节点,它实现了快速合并与查询。本文将介绍并查集的基本概念、应用场景以及如何在Python中轻松实现并查集,帮助你轻松应对各种数据结构挑战。
26 3
|
15天前
|
大数据 UED 开发者
实战演练:利用Python的Trie树优化搜索算法,性能飙升不是梦!
在数据密集型应用中,高效搜索算法至关重要。Trie树(前缀树/字典树)通过优化字符串处理和搜索效率成为理想选择。本文通过Python实战演示Trie树构建与应用,显著提升搜索性能。Trie树利用公共前缀减少查询时间,支持快速插入、删除和搜索。以下为简单示例代码,展示如何构建及使用Trie树进行搜索与前缀匹配,适用于自动补全、拼写检查等场景,助力提升应用性能与用户体验。
35 2
|
17天前
|
算法 程序员 Python
程序员必看!Python复杂度分析全攻略,让你的算法设计既快又省内存!
在编程领域,Python以简洁的语法和强大的库支持成为众多程序员的首选语言。然而,性能优化仍是挑战。本文将带你深入了解Python算法的复杂度分析,从时间与空间复杂度入手,分享四大最佳实践:选择合适算法、优化实现、利用Python特性减少空间消耗及定期评估调整,助你写出高效且节省内存的代码,轻松应对各种编程挑战。
26 1
|
22小时前
|
算法 安全 Go
Python与Go语言中的哈希算法实现及对比分析
Python与Go语言中的哈希算法实现及对比分析
8 0
|
22小时前
|
安全 测试技术 Go
Python 和 Go 实现 AES 加密算法的技术详解
Python 和 Go 实现 AES 加密算法的技术详解
6 0