{{ cat }}'s docs

1.6.0 如何让字典保持有序


0. 假设应用场景

假设我们有一个比赛,希望记录选手的名称,然后按照选手完成比赛的顺序来储存选手的信息,那这样的话,我们需要这样一个dict
{选手名称:(名次, 完成时间), ...}
这样我们就可以方便的按照选手的名称找到他/她的名次和时间,但是假如我们希望按照记录的顺序,也就是选手名次的顺序来迭代整个列表,传统的dict无法实现

>>> d["Jim"] = (1, 10)

>>> d["Bob"] = (2, 15)

>>> d["Tim"] = (3, 25)

>>> d["Sandy"] = (4, 33)

>>> for i in d:
...     print i

Tim
Bob
Jim
Sandy

输出的名称是无序的


1. collections.OrderedDict可以创建有序的dict

>>> from collections import OrderedDict
>>> od = OrderedDict()

>>> od["Jim"] = (1, 10)

>>> od["Bob"] = (2, 15)

>>> od["Tim"] = (3, 25)

>>> od["Sandy"] = (4, 33)

>>> for i in od:
...     print i

Jim
Bob
Tim
Sandy

OrderedDict可以让dict记录元素进入的顺序,实现dict的顺序化