OrderedDict

  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)

http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001411031239400f7181f65f33a4623bc42276a605debf6000

来自为知笔记(Wiz)

时间: 2024-10-13 17:11:28

OrderedDict的相关文章

Python OrderedDict使用

一.最近最少使用实现: import collections class LRUDict(object): ''' 最近最少使用队列实现,最近使用的键值放后面 ''' def __init__(self,dict_list,size): self.ordered_dict = collections.OrderedDict(dict_list) self.size = size def get(self,key): if key in self.ordered_dict: value = sel

有序字典(orderedDict)

orderdDict是对字典类型的补充,他记住了字典元素添加的顺序 例:import collections dic = collections.OrderedDict() dic['k1'] = 'v1' dic['k2'] = 'v2' dic['k3'] = 'v3' print(dic) 得: OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]) 把数据拿到最后def move_to_end(self, key, last=Tru

python创建有序字典OrderedDict()

python 有序字典OrderedDict # -*- coding:utf-8 -*- """ python有序字典 需导入模块collections """ import collections # 通过OrderedDict类创建的字典是有序的 dic = collections.OrderedDict() dic['k1'] = 'v1' dic['k2'] = 'v2' dic['k3'] = 'v3' print dic "

Python: sort,sorted,OrderedDict的用法

Python: sort,sorted,OrderedDict的用法 from http://stqdd.com/archives/427 by 莫亚菜 python对容器内数据的排序有两种,一种是容器自己的sort函数,一种是内建的sorted函数. sort函数和sorted函数唯一的不同是,sort是在容器内排序,sorted生成一个新的排好序的容器. 对于一个简单的数组 L=[5,2,3,1,4]. sort: L.sort() sorted(...)    sorted(iterabl

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

1.3.5 OrderedDict 有序字典 OrderedDict是dict的子类,它记住了内容添加的顺序. import collections print 'Regular dictionary:' d = {} d['a'] = 'A' d['b'] = 'B' d['c'] = 'C' for k, v in d.items(): print k, v print '\nOrderedDict:' d = collections.OrderedDict() d['a'] = 'A' d

python之OrderedDict类

1 # OrderedDict类使用举例 2 # OrderedDict类的使用与字典相似,不同的是OrderedDict类会记录键值对的添加顺序 3 from collections import OrderedDict 4 5 hoppys = OrderedDict() 6 hoppys['mike'] = 'swim' 7 hoppys['tom'] = 'reading' 8 hoppys['lily'] = 'singing' 9 10 print(hoppys) 11 print(

Python collections.OrderedDict解决dict元素顺序问题

编程中遇到个问题,python json.loads时元素顺序可能会发生变化. 这个对于一些需要使用元素顺序来做一些策略的代码来说是致命的. 在网上查了查,结合自己的知识总结一下. 使用dict时,Key是无序的.在对dict做迭代时,我们无法确定Key的顺序. 如果要保持Key的顺序,可以用OrderedDict. OrderedDict的Key会按照插入的顺序排列,不是Key本身排序. 1 #coding=utf-8 2 3 import json 4 import collections

python中OrderedDict的使用

很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有个模块collections(英文,收集.集合),里面自带了一个子类 OrderedDict,实现了对字典对象中元素的排序.请看下面的实例: 1 import collections 2 print "Regular dictionary" 3 d={} 4 d['a']='A' 5 d['b']='B' 6 d['c']='C' 7 for k,v in d.items(): 8 print k

python之collections之有序字典(OrderedDict)

一.定义OrderedDict是对字典的补充,它记住了字典元素的添加顺序.eg: 二.OrderedDict相关方法def clear(self): # real signature unknown; restored from __doc__ """ od.clear() -> None. Remove all items from od. 清除有序字典中的元素 """ passeg: def copy(self): # real sig