1.7 字典排序

问题描述

你想创建一个字典,并且在迭代或序列化这个字典时能够控制元素的顺序。

解决方案

这里介绍一种新的容器:collections模块中的OrderedDict类。它的用法如下:

from collections import OrderedDict

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

讨论

有序词典就像常规词典一样,但有一些与排序操作相关的额外功能。由于内置的 dict 类获得了记住插入顺序的能力(在 Python 3.7 中保证了这种新行为),它们变得不那么重要了。

OrderedDict内部维护着一个根据键插入顺序排序的双向列表。每次当一个新的元素插入进来的时候,它会被放到链表的尾部。对于一个已经存在的键进行重复赋值不会改变键的顺序。也正因如此,一个OrderedDict的大小时普通字典的两倍,所以如果需要构建一个需要大量OrderedDict实例的数据结构时,要权衡其带来的好处是否大过内存的额外消耗。

关于OrderedDict更详细的介绍和用法,参见官方文档

上一篇:Java之Collections静态类


下一篇:集合常用方法Collections类