我们知道,通过 {} 创建的字典是无序的。如何创建有序字典呢?
解决方案
可以使用 collections 模块中的 OrderedDict 类。当对字典做迭代时,它会严格按照元素添加的顺序进行。例如:
代码语言:javascript复制from collection import OrderedDict
d = OrderedDict()
d['1st'] = 1
d['2nd'] = 2
d['3rd'] = 3
d['4th'] = 4
for key in d:
print(k, d[key])
输出内容:
代码语言:javascript复制1st 1
2nd 2
3rd 3
4th 4
当字典需要转换成其他格式并且希望保持内部元素的顺序时,有序字典特别有用。例如:
代码语言:javascript复制import json
j = json.dumps(d)
# j 的内容是:
# {"1st": 1, "2nd": 2, "3rd": 3, "4th": 4}
讨论
需要注意的是,OrderedDict 的大小是普通字典的 2 倍多,使用时需要权衡其额外的内存开销与带来的好处。
参考
- 《Python Cookbook》第三版
- http://python3-cookbook.readthedocs.org/zh_CN/latest/