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

yipeiwu_com5年前Python基础

本文实例讲述了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简单文本处理的方法。分享给大家供大家参考。具体如下: 由于有多线程的影响,c++项目打印出来的时间顺序不一致,导致不太好在excel中统计,故使用python写...

Python监控主机是否存活并以邮件报警

利用Python写了简单测试主机是否存活脚本,此脚本不适于线上使用,因为网络延迟、丢包现象会造成误报邮件,那么后续会更新判断三次ping不通后再发报警邮件,并启用多线程处理。 #!/...

pandas实现将日期转换成timestamp

pandas实现将日期转换成timestamp

OUTLINE 常见的时间字符串与timestamp之间的转换 日期与timestamp之间的转换 常见的时间字符串与timestamp之间的转换 这里说的字符串不是一般意义上的字符串,...

python导入坐标点的具体操作

python导入坐标点的具体操作

小编今天教你们python怎么导入坐标点,解决你在生活中遇到的小问题。 首先下载安装python,打开文本编辑器,将文件保存成 py格式,如果python目录不在usr/bin目录下,则...

Python批处理更改文件名os.rename的方法

在工作中,我们经常会遇到需要对大批量文件进行重命名的操作,而python提供了很简单的方法: import os #top是目标文件夹(绝对路径),os.walk会读取其内的文件及...