美文网首页Python进阶
【Python进阶】1.7 字典排序(OrderedDict)

【Python进阶】1.7 字典排序(OrderedDict)

作者: Julia语言 | 来源:发表于2018-09-11 08:29 被阅读39次

微信公众号:Julia语言
每周一三五更新Julia语言
每周二四六更新Python进阶;

字典排序


问题

你想创建一个字典,并且在迭代或序列化这个字典的时候能够控制元素的顺序。


解决方案

为了能控制一个字典中元素的顺序,你可以使用 collections 模块中的 OrderedDict 类。
在迭代操作的时候它会保持元素被插入时的顺序,示例如下:

from collections import OrderedDict

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

当你想要构建一个将来需要序列化或编码成其他格式的映射的时候, OrderedDict 是非常有用的。
比如,你想精确控制以 JSON 编码后字段的顺序,你可以先使用 OrderedDict 来构建这样的数据:

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

讨论

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

需要注意的是,一个 OrderedDict 的大小是一个普通字典的两倍,因为它内部维护着另外一个链表。
所以如果你要构建一个需要大量 OrderedDict 实例的数据结构的时候(比如读取 100,000 行 CSV 数据到一个 OrderedDict 列表中去),
那么你就得仔细权衡一下是否使用 OrderedDict 带来的好处要大过额外内存消耗的影响。

欢迎关注微信公众账号Julia语言.jpg

点击阅读原文可查看历史文章

相关文章

  • 【Python进阶】1.7 字典排序(OrderedDict)

    微信公众号:Julia语言每周一三五更新Julia语言;每周二四六更新Python进阶; 字典排序 问题 你想创建...

  • python有序字典

    python的内建函数dict 是无序字典,如果想要字典有序使用 collections下的OrderedDict...

  • Python collections模块--OrderedDic

    OrderedDict 有序字典 字典是无序的,可以通过OrderedDict使其有序。当对字典做迭代时,它会严格...

  • OrderedDict\Sorted

    OrderedDict 很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有...

  • 字典排序

    字典排序 为了能控制一个字典中元素的顺序,你可以使用collections模块中的OrderedDict类。 在迭...

  • 列表,字典排序

    列表嵌套字典,根据字典某一key排序python sort、sorted高级排序技巧(key的使用)Python要...

  • python 常用操作记录

    python 列表及字典(按key、按value排序) python dict按照key 排序:1、method ...

  • Python 日常使用记录

    sorted排序 python的排序函数sort,sorted在列表排序和字典排序中的应用详解和举例,python...

  • python 高级进阶之字典排序

    实际案列:某班数学成绩以字典形式存储为:{'Tom': 88, 'Jack': 90, 'Rose': 100.....

  • Python 字典排序

    Python 字典排序 《Python3 CookBook》[https://python3-cookbook.r...

网友评论

    本文标题:【Python进阶】1.7 字典排序(OrderedDict)

    本文链接:https://www.haomeiwen.com/subject/gkpawftx.html