zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Python collections.OrderedDict()

Python collections
2023-09-27 14:25:29 时间


一、问题

创建有序字典。



二、解决方案

collections.OrderedDict()

标准的字典是无序的。而collections.OrderedDict()是一种特殊字典,能够按照键的插入顺序保留键值对在字典的次序。

from collections import OrderedDict

d = OrderedDict()
d['foo'] = 1
d['bar'] = 2
d['spam'] = 3
d['grok'] = 4
print(d)

for key, value in d.items():
    print(key, value)
OrderedDict([('foo', 1), ('bar', 2), ('spam', 3), ('grok', 4)])
foo 1
bar 2
spam 3
grok 4

控制 \(JSON\) 编码后字段的顺序。

import json
print(json.dumps(d))
{"foo": 1, "bar": 2, "spam": 3, "grok": 4}


三、讨论

OrderedDict()内部是一个根据键的插入顺序排序的双向链表。当新元素插入,被放到链表尾部。对存在的键重复赋值不会改变键的顺序。

一个OrderedDict的大小是一个普通字典的两倍。所以当数据量大时(比如100000行 csv 数据放到 orderedDict 中),需要考虑内存的消耗。