1. OrderedDict
  2. 使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。
  3. 如果要保持Key的顺序,可以用OrderedDict:
  4. >>> from collections import OrderedDict
  5. >>> d = dict([('a', 1), ('b', 2), ('c', 3)])
  6. >>> d # dict的Key是无序的
  7. {'a': 1, 'c': 3, 'b': 2}
  8. >>> od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
  9. >>> od # OrderedDict的Key是有序的
  10. OrderedDict([('a', 1), ('b', 2), ('c', 3)])
  11. 注意,OrderedDict的Key会按照插入的顺序排列,不是Key本身排序:
  12. >>> od = OrderedDict()
  13. >>> od['z'] = 1
  14. >>> od['y'] = 2
  15. >>> od['x'] = 3
  16. >>> od.keys() # 按照插入的Key的顺序返回
  17. ['z', 'y', 'x']
  18. OrderedDict可以实现一个FIFO(先进先出)的dict,当容量超出限制时,先删除最早添加的Key:
  19. from collections import OrderedDict
  20. class LastUpdatedOrderedDict(OrderedDict):
  21. def __init__(self, capacity):
  22. super(LastUpdatedOrderedDict, self).__init__()
  23. self._capacity = capacity
  24. def __setitem__(self, key, value):
  25. containsKey = 1 if key in self else 0
  26. if len(self) - containsKey >= self._capacity:
  27. last = self.popitem(last=False)
  28. print 'remove:', last
  29. if containsKey:
  30. del self[key]
  31. print 'set:', (key, value)
  32. else:
  33. print 'add:', (key, value)
  34. OrderedDict.__setitem__(self, key, value)

OrderedDict的更多相关文章

  1. Python: sort,sorted,OrderedDict的用法

    Python: sort,sorted,OrderedDict的用法 from http://stqdd.com/archives/427 by 莫亚菜 python对容器内数据的排序有两种,一种是容 ...

  2. python模块介绍- collections(5)-OrderedDict 有序字典

    1.3.5 OrderedDict 有序字典 OrderedDict是dict的子类,它记住了内容添加的顺序. import collections print 'Regular dictionary ...

  3. Python - DICT 字典排序 - OrderedDict

    官方地址: https://docs.python.org/2/library/collections.html#collections.OrderedDict >>> # regu ...

  4. python-Day3-set 集合-counter计数器-默认字典(defaultdict) -可命名元组(namedtuple)-有序字典(orderedDict)-双向队列(deque)--Queue单项队列--深浅拷贝---函数参数

    上节内容回顾:C语言为什么比起他语言块,因为C 会把代码变异成机器码Pyhton 的 .pyc文件是什么python 把.py文件编译成的.pyc文件是Python的字节码, 字符串本质是 字符数组, ...

  5. dict、defaultdict 和 OrderedDict 比较

    一.dict.defaultdict 和 OrderedDict 常见的方法比较 dict.defaultdict 和 OrderedDict 常见的方法比较   dict defaultdict O ...

  6. Collections -- OrderedDict类

    普通dict(字典)在插入的时候并不记住元素的顺序,迭代器会根据散列表(哈希表)中存储的顺序来生成的.而OrderedDict则会记录元素的顺序,并且在迭代器输出时,会按现在记录的顺序进行遍历. 例: ...

  7. python3 OrderedDict类(有序字典)

    创建有序字典 import collections dic = collections.OrderedDict() dic['k1'] = 'v1' dic['k2'] = 'v2' dic['k3' ...

  8. Python 有序字典(OrderedDict)与 普通字典(dict)

    Python 的基础数据类型中的字典类型分为:无序字典 与 有序字典 两种类型 1.无序字典(普通字典): my_dict = dict()my_dict["name"] = &q ...

  9. python之OrderedDict类

    # OrderedDict类使用举例 # OrderedDict类的使用与字典相似,不同的是OrderedDict类会记录键值对的添加顺序 from collections import Ordere ...

随机推荐

  1. ARR状态监控脚本

    ##################################################################################### # THIS IS SAMP ...

  2. SQL Server查询数据库中所有的表名及行数

    SELECT a.name, b.rows FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.id WHERE (a.type = ...

  3. git 设置

    系统乱码 项目中的编码统一设置为UTF-8编码. 设置系统的语言设置为 zh_UTF-8,把 export LANG=zh_CN.UTF-8 保存到~/.profile文件里. $ env|grep ...

  4. Android(java)学习笔记156:Java虚拟机和Dalvik虚拟机的区别

    Google于2007年底正式发布了Android SDK, 作为 Android系统的重要特性,Dalvik虚拟机也第一次进入了人们的视野.它对内存的高效使用,和在低速CPU上表现出的高性能,确实令 ...

  5. Pyhon之类学习1

    #!/usr/bin/python # Filename: class.py __metaclass__=type class Person: def set_name(self,name): sel ...

  6. Nginx高性能服务器安装、配置、运维 (2) —— Nginx安装

    三.Nginx 安装 使用SecureCRT以Root身份登录阿里云,在安装Nginx前先做好阿里云磁盘挂载 -------------- 挂载磁盘 -------------- 1.df -h #显 ...

  7. modelsim将波形文件保存下来却不打开图形界面

    vsim -c -do sim.tcl -l sim.log 波形怎么保存啊,我想把波形保存下来,但不显示,想看那个信号时在加上,不然信号全部出来了太乱了 在do文件里写add wave -r *ru ...

  8. Wireshark - 过滤规则

    使用 Wireshark 的默认设置抓包时,会得到大量的冗余信息,以至于很难找到自己所需的封包.使用过滤器可以帮助我们在庞杂的结果中快速地找到我们所需的封包.过滤器分为两种:捕捉过滤器和显示过滤器. ...

  9. 在html页,使用ctrl,shift多选表格行

    前段时间,项目中遇到这样一个需求.需要在页面中像windows资源管理器中一样可以使用ctrl和shift键来多选. <html> <head> <style> b ...

  10. 20151224jquery学习笔记---cookie插件

    hello,祝自己平安夜快乐. Cookie 是网站用来在客户端保存识别用户的一种小文件.一般来用库可以保存用户登录信息.购物数据信息等一系列微小信息.一. 使用 cookie 插件官方网站: htt ...