字典排序

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by xuehz on 2017/2/23

from collections import OrderedDict


import collections

print('Regular dictionary:')
d = {}
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
d['d'] = 'D'
d['e'] = 'E'

for k, v in d.items():
    print(k, v)

print('
OrderedDict:')
d = collections.OrderedDict()
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
d['d'] = 'D'
d['e'] = 'E'

for k, v in d.items():
    print(k, v)

"""

Regular dictionary:
c C
d D
b B
a A
e E
可以看到通常字典不是以插入顺序遍历的。


OrderedDict:
a A
b B
c C
d D
e E
"""

d = OrderedDict()
d['foo'] = 1
d['bar'] = 2
d['spam'] = 3
d['grok'] = 4
# Outputs "foo 1", "bar 2", "spam 3", "grok 4"

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

for key in d:
    print(key, d[key])

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


"""
OrderedDict 内部维护着一个根据键插入顺序排序的双向链表。
每次当一个新的元素插入进来的时候, 它会被放到链表的尾部。对于一个已经存在的键的重复赋值不会改变键的顺序。

一个 OrderedDict 的大小是一个普通字典的两倍
"""
原文地址:https://www.cnblogs.com/xuehaozhe/p/6436350.html