Contents
20.1.7. 有序字典¶
#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/7/28 19:15
# filename: 07.字典的排序.py
from collections import OrderedDict
d = OrderedDict()
d["hujianli1"] = 1
d["hujianli2"] = 2
d["hujianli3"] = 3
d["hujianli4"] = 4
print(d)
for key in d:
print(key, d[key])
# 控制json编码后的字段的顺序。
import json
print(json.dumps(d))
print(type(json.dumps(d)))
输出信息
OrderedDict([('hujianli1', 1), ('hujianli2', 2), ('hujianli3', 3), ('hujianli4', 4)])
hujianli1 1
hujianli2 2
hujianli3 3
hujianli4 4
{"hujianli1": 1, "hujianli2": 2, "hujianli3": 3, "hujianli4": 4}
<class 'str'>
注意:
OrderedDict 内部维护着一个根据键插入顺序排序的双向链表。
每次当一个新的元素插入进来的时候, 它会被放到链表的尾部。对于一个已经存在的键的重复赋值不会改变键的顺序。
需要注意的是,一个 OrderedDict 的大小是一个普通字典的两倍,因为它内部维护着另外一个链表。
所以如果你要构建一个需要大量 OrderedDict 实例的数据结构的时候(比如读取 100,000 行 CSV 数据到一个 OrderedDict 列表中去),
那么你就得仔细权衡一下是否使用 OrderedDict 带来的好处要大过额外内存消耗的影响。