Python怎样完成一个井然有序的字典

文中为Python CookBook一书的阅读文章手记。

Python如何完成一个能够在迭代更新或编码序列化时可以操纵原素的次序的字典呢?处理计划方案是应用collections控制模块中的OrderedDict类。 在迭代更新实际操作的情况下它会维持原素被插进时的次序,实例以下:

from collections import OrderedDict
d = OrderedDict()
d[ foo ] = 1
d[ bar ] = 2
d[ spam ] = 3
d[ grok ] = 4
# 結果为:  foo 1 ,  bar 2 ,  spam 3 ,  grok 4 
for key in d:
 print(key, d[key])

如果你要想搭建一个未来必须编码序列化或编号成别的文件格式的投射的情况下,OrderedDict是是非非经常出现用的。例如,你要精准操纵以JSON编号后字段名的次序,你可以以先应用OrderedDict来搭建那样的数据信息。

OrderedDict 內部维护保养着一个依据键插进次序排列的双重链表。每一次当一个新的原素插进进去的情况下, 它会被放进链表的尾部。针对一个早已存有的键的反复取值不容易更改键的次序。

必须留意的是,一个 OrderedDict 的尺寸是一个一般字典的二倍,由于它內部维护保养着此外一个链表。 因此假如你需要搭建一个必须很多 OrderedDict 案例的数据信息构造的情况下(例如载入100,000行CSV数据信息到一个 OrderedDict 目录中来), 那麼你也就得细心衡量一下是不是应用 OrderedDict 产生的益处要大过附加运行内存耗费的危害。