Python cookbook(数据结构与算法)让字典保持有序的方法
2018-02-18 08:29
1041 查看
本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
您可能感兴趣的文章:
- Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
- Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
- Python中字典映射类型的学习教程
- 详解Python中映射类型(字典)操作符的概念和使用
- python映射列表实例分析
- Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
- Python cookbook(数据结构与算法)字典相关计算问题示例
- Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
- Python cookbook(数据结构与算法)从字典中提取子集的方法示例
- Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
相关文章推荐
- Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
- Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
- Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
- Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
- Python cookbook(数据结构与算法)实现优先级队列的方法示例
- Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
- Python cookbook(数据结构与算法)字典相关计算问题示例
- Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
- Python cookbook(数据结构与算法)保存最后N个元素的方法
- Python cookbook(数据结构与算法)将序列分解为单独变量的方法
- Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
- Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
- Python cookbook(数据结构与算法)从字典中提取子集的方法示例
- Python cookbook(数据结构与算法)对切片命名清除索引的方法
- Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
- 【python cookbook】简化字符串的translate 方法的使用
- Python高级编程-如何让字典保持有序?
- python cookbook第三版学习笔记十一:类和对象(二)调用父类的方法
- python字典保持有序
- python-求在pi的方法 来自python cookbook上 just for fun