字典排序

本文深入探讨了Python中有序字典(OrderedDict)的概念与实现原理,对比了常规字典与有序字典在遍历顺序上的差异,展示了有序字典如何保持键的插入顺序,并提供了详细的代码示例。
#!/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('\nOrderedDict:')
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值