zoukankan      html  css  js  c++  java
  • 【python cookbook】【数据结构与算法】7.让字典保持有序

    问题:创建一个字典,同时对字典做迭代或序列化操作时,也能控制其中元素的顺序;

    解决方案:可以使用collections模块中的OrderedDict类来控制字典中元素的顺序。当对字典做迭代时,他会严格按照元素初始添加的顺序进行。例如:

    from collections import OrderedDict
    
    d=OrderedDict()
    d['foo']=1
    d['bar']=2
    d['spam']=3
    d['grok']=4
    
    for key in d:
        print(key,d[key])
    Python 3.4.0 (v3.4.0:04f714765c13, Mar 16 2014, 19:24:06) [MSC v.1600 32 bit (Intel)] on win32
    Type "copyright", "credits" or "license()" for more information.
    >>> ================================ RESTART ================================
    >>> 
    foo 1
    bar 2
    spam 3
    grok 4
    >>> 

    当想构建一个映射结构以便稍后对其做序列化或编码成另一种格式时,OrderedDict就显得特别有用。

    例如:若想在进行JSON编码时精确控制各字段的顺序,那么只要首先在OrderedDict中构建数据就可以了。

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

    补充:OrderedDict内部维护了一个双向链表,它会根据元素加入的顺序排列键的位置。第一个新加入的元素被放置在链表的末尾,接下来对已存在的键做重新赋值不会改变键的顺序。

    注意:OrderedDict的大小是普通字典的2倍,这是它额外创建的链表所致。所以在构建涉及大量数据的结构时要权衡其带来的好处与消耗的内存。

  • 相关阅读:
    git修改 config 配置用户名和邮箱
    Tranformer模型学习
    centos安装
    ubuntu cuda配置
    ubuntu安装python3.6
    flask后端部署
    linux基本操作
    python 基础数据结构
    文本特征选择
    常用笔记
  • 原文地址:https://www.cnblogs.com/apple2016/p/5746450.html
Copyright © 2011-2022 走看看