python 有序字典 OrderedDict

x33g5p2x  于2021-11-10 转载在 Python  
字(1.0k)|赞(0)|评价(0)|浏览(457)

首先,为什么要用有序字典?

个人感觉有3个好处

1)取值的时候不用遍历,比list列表快捷,高效。

2)又有顺序,比普通的字典更好管理。

3)可以开头取出,结尾取出,有队列的优点,又可以按key取值,比队列方便实用。

有序字典的顺序是你插入时候的顺序

不是自动排序,

  1. import heapq
  2. import numpy as np
  3. if __name__ == '__main__':
  4. import collections
  5. dic = collections.OrderedDict()
  6. dic[1] = 'v1'
  7. dic[3] = 'v3'
  8. dic[4] = 'v3'
  9. dic[2] = 'v2'
  10. for k, v in dic.items():
  11. print( k, v)

popitem()是取最后一条数据,最新插入的: 

  1. if __name__ == '__main__':
  2. import collections
  3. dic = collections.OrderedDict()
  4. dic[3] = 'v3'
  5. dic[4] = 'v4'
  6. dic[2] = 'v2'
  7. dic[1] = 'v1'
  8. print(dic)
  9. #最新插入的,最后一条
  10. print(dic.popitem())
  11. dic[8] = 'v8'
  12. #最先插入的,第1条
  13. print(dic.popitem(last=False))

结果是2,v2

获取长度:

  1. print(len(dic))

再看几个例子:

dd = {"banana": 3, "apple":4, "pear": 1, "orange": 2}

#按key排序

  1. kd = collections.OrderedDict(sorted(dd.items(), key=lambda t: t[0]))
  2. print kd

#按照value排序

  1. vd = collections.OrderedDict(sorted(dd.items(),key=lambda t:t[1]))
  2. print vd

#输出

OrderedDict([("apple", 4), ("banana", 3), ("orange", 2), ("pear", 1)])

OrderedDict([("pear", 1), ("orange", 2), ("banana", 3), ("apple", 4)])

相关文章