Python cookbook(数据结构与算法)让字典保持有序的方法

作者:垄上行 时间:2022-04-28 03:28:04 

本文实例讲述了Python让字典保持有序的方法。分享给大家供大家参考,具体如下:

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

解决方案:可以使用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倍,这是它额外创建的链表所致。所以在构建涉及大量数据的结构时要权衡其带来的好处与消耗的内存。

(代码摘自《Python Cookbook》)

希望本文所述对大家Python程序设计有所帮助。

来源:http://www.cnblogs.com/apple2016/p/5746450.html

标签:Python,数据结构与算法,字典
0
投稿

猜你喜欢

  • PHP中array_slice函数用法实例详解

    2023-06-20 20:18:04
  • Tensorflow 实现分批量读取数据

    2023-09-23 23:04:44
  • python爬虫请求头的使用

    2023-03-21 07:10:23
  • MySQL的添加用户的两种方法

    2012-01-29 17:50:10
  • 全面阐述overflow:hidden属性

    2008-08-18 13:30:00
  • Go获取与设置环境变量的方法详解

    2023-06-21 04:35:10
  • 深入了解Python Opencv数据增强

    2023-10-27 05:00:01
  • Dojo Style Javascript 编程规范

    2007-10-25 17:24:00
  • 使用python检查yaml配置文件是否符合要求

    2021-06-23 05:27:53
  • 深入讨论Python函数的参数的默认值所引发的问题的原因

    2022-08-03 00:54:31
  • Python3实现的回文数判断及罗马数字转整数算法示例

    2023-07-07 05:10:06
  • 基于循环神经网络(RNN)的古诗生成器

    2023-04-29 13:28:06
  • Python实现求数列和的方法示例

    2021-07-15 05:27:08
  • 解决杀毒软件误删asp文件的方法

    2008-10-21 21:23:00
  • Python装饰器用法与知识点小结

    2023-11-16 00:45:02
  • js自定义快捷,IE,FF有良好的支持

    2007-08-25 17:34:00
  • oracle 下WITH CHECK OPTION用法

    2009-02-28 10:59:00
  • python3库numpy数组属性的查看方法

    2023-07-19 07:25:50
  • numpy 数组拷贝地址所引起的同步替换问题

    2023-11-07 18:00:06
  • Python中with...as...的使用方法

    2021-10-01 16:58:07
  • asp之家 网络编程 m.aspxhome.com