Python 3.10发布了,还需要Ordered Dict吗?

Python 3.10发布了,还需要Ordered Dict吗?

全文2600字,阅读约需6分钟

早些时候,我们在讨论“列表是否可以替代元组”时,“稍微深入”的讨论过Python中列表和元组的区别(参见前文《从一个面试题说开去:有了列表为什么还要元组》)。

其实类似的情况还有很多,比如

  • dict vs set

  • dict vs OrderedDict

  • 其他。。。。

这些数据结构在某些方面具有相似性,在使用时会引起的困惑,今天我们来聊聊 OrderedDict 和 dict,主要涉及几个方面:

  1. OrderedDict的用法和特点
  2. OrderedDict和dict的不同之处
  3. OrderedDict不可替代的应用场景
  4. Python核心开发对OrderedDict的看法

1. 关于OrderedDict

关于OrderedDict 我们可以用一句话来描述:它是一个有序的字典

其实在2008年之前是没有OrderedDict的,于是很多开发者自行实现了有序字典,比如:

  • 知名的Web框架Django创建了SortedDict

  • pypi上有开发上传了StableDict,供他人使用

这从侧面说明了Python使用过程中,对”字典有序性“的需求。于是后来有了PEP372提案:由Python标准库提供统一的有序字典(OrderedDict),并于在python 2.7、3.1中发布于collections 模块中。

通常,collections模块中存放了 ** “好用、但不那么常用” ** 的的容器型数据类型,比namedtupledefaultdict等。可能有些人还不了解OrderedDict,这里来简单介绍一下:

正如前面提到的,OrderedDict位于collections模块中,使用前需要导入

from collections import OrderedDict

d = OrderedDict()

d["a"] = 1
d["c"] = 3
d["b"] = 2

print(d)       # 打印OrderedDict
for _ in d:    # 遍历OrderedDict
    print(_)
OrderedDict([('a', 1), ('c', 3), ('b', 2)])
a
c
b

从执行结果可以看出来,OrderedDict中的数据是稳定有序,数据的排序取决于**“数据加入OrderedDict的顺序”**。

此外,OrderedDict也可接受多个键值对进行创建,以下几个例子的执行结果相同:

d = OrderedDict([("a", 1), ("b", 2)])  # 例子1
d = OrderedDict({
   "a": 1, "b&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值