Python cookbook(数据结构与算法)让字典保持有序的方法
本文实例讲述了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数据结构与算法之字典树实现方法示例
- Python cookbook(数据结构与算法)字典相关计算问题示例
- Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
- Python 字典(Dictionary)操作详解
- python两种遍历字典(dict)的方法比较
- python提取字典key列表的方法
- Python中字典创建、遍历、添加等实用操作技巧合集
- Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
- Python cookbook(数据结构与算法)保存最后N个元素的方法
- Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
- Python cookbook(数据结构与算法)将序列分解为单独变量的方法
- Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
赞 (0)