使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。

如果要保持Key的顺序,可以用OrderedDict

  from collections import OrderedDict
d = dict([('a', 1), ('b', 2), ('c', 3)])
d # dict的Key是无序的
{'a': 1, 'c': 3, 'b': 2}
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
od # OrderedDict的Key是有序的
OrderedDict([('a', 1), ('b', 2), ('c', 3)])

注意,OrderedDict的Key会按照插入的顺序排列,不是Key本身排序:

od = OrderedDict()
od['z'] = 1
od['y'] = 2
od['x'] = 3
od.keys() # 按照插入的Key的顺序返回
['z', 'y', 'x']

OrderedDict可以实现一个FIFO(先进先出)的dict,当容量超出限制时,先删除最早添加的Key:

from collections import OrderedDict  

class LastUpdatedOrderedDict(OrderedDict):  

    def __init__(self, capacity):
super(LastUpdatedOrderedDict, self).__init__()
self._capacity = capacity def __setitem__(self, key, value):
containsKey = 1 if key in self else 0
if len(self) - containsKey >= self._capacity:
last = self.popitem(last=False)
print 'remove:', last
if containsKey:
del self[key]
print 'set:', (key, value)
else:
print 'add:', (key, value)
OrderedDict.__setitem__(self, key, value)

最新文章

  1. c#查找string数组的某一个值的索引
  2. c++中的指针之指针在数组
  3. groups, usermod, chown, chgrp, chmod
  4. .net学习笔记---lambda表达式(自执行方法)
  5. XSS获取cookie
  6. java反射快速入门(二)
  7. [记录 ]升级IOS 9 和 XCode 7 引起的问题
  8. JDK1.8 HashMap中put源码分析
  9. C: strcpy & memcpy & scanf/printf format specifier.. escape characters..
  10. switch 在什么时候可以不写default
  11. ORACLE中用rownum分页并排序的SQL语句
  12. apt-get install 出问题怎么办?
  13. 一、JSP标签介绍,自定义标签
  14. Ubuntu16.04搜狗输入法无法输入中文
  15. Loj 6036 「雅礼集训 2017 Day4」编码 - 2-sat
  16. Struts2漏洞利用工具下载(更新2017-V1.8版增加S2-045/S2-046)
  17. ListView 指定显示最后一行,scrollView显示最底部
  18. 【GIS】postgres(postgis) --》nodejs+express --》geojson --》leaflet
  19. PHP使用mysqli扩展连接MySQL数据库
  20. 学习Java的方法

热门文章

  1. Java连接Mysql的基本用法
  2. 牛客国庆集训派对Day1:J:Princess Principal(栈模拟求括号匹配)
  3. openfaas 了解
  4. 【HTML5】Canvas绘图详解-1
  5. Python 函数 min()
  6. 一个detect问题引发的一系列思考
  7. 读取zip文件,不解压缩直接解析,支持文件名中文,解决内容乱码
  8. 生成器+列表生成式,生成器可以节省内存,随时调取函数运行,以及实现多线程运行函数,__next__()和.send(参数)的区别,a,b=b,a+b其实是元祖的用法,出现异常状态用try...except StopIteration来处理
  9. 第2章 深入分析java I/O的工作机制(上)
  10. Py修行路 python基础 (三)字典