Python collections模块

Python拥有一些内置的数据类型,比如str,int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外的数据类型:


1.    namedtuple   生成可以使用名字来访问元素内容的tuple子类

2.    deque   双端队列,可以快速的从另外一侧追加和推出对象

3.    Counter   计数器,主要用来计数

4.    OrderedDict   有序字典

5.    defaultdict   带有默认值的字典

 

下面看看每种类型的用法:


[python]  view plain  copy
 print ?
  1. __author__ = 'MrChen'  
  2. # Python version 3.4.1  
  3. # Module: collections  
  4.   
  5. #Counter 对象  
  6. from collections import Counter  
  7. c = Counter('abcdabcaba')  
  8. print(c) # Counter({'a': 4, 'b': 3, 'c': 2, 'd': 1})  
  9. print(c.most_common(2)) # [('a', 4), ('b', 3)]  
  10.   
  11. #deque 对象  
  12. from collections import deque  
  13. d = deque('python')  
  14. d.append('3')  
  15. d.appendleft('nice')  
  16. print(d) # deque(['nice', 'p', 'y', 't', 'h', 'o', 'n', '3'])  
  17. d.pop()  
  18. d.popleft()  
  19. print(d) # deque(['p', 'y', 't', 'h', 'o', 'n'])  
  20.   
  21. #defaultdict 对象  
  22. from collections import defaultdict  
  23. dic = defaultdict(list)  
  24. dic['red'].append(5)  
  25. dic['blue'].append(3)  
  26. dic['yellow'].append(4)  
  27. dic['red'].append(8)  
  28. print(dic.items()) # dict_items([('red', [5, 8]), ('yellow', [4]), ('blue', [3])])  
  29.   
  30. #namedtuple 对象  
  31. from collections import namedtuple  
  32. websites = [  
  33.     ('baidu''http://www.baidu.com''李彦宏'),  
  34.     ('sina',  'http://www.sina.com' , '王志东'),  
  35.     ('wangyi','http://www.163.com'  , '丁磊')  
  36. ]  
  37. Website = namedtuple('myWebsite',['name''url''ceo'])  
  38. for w in websites:  
  39.     w = Website._make(w)  
  40.     print(w)  
  41. '''''输出: 
  42. myWebsite(name='baidu', url='http://www.baidu.com', ceo='李彦宏') 
  43. myWebsite(name='sina', url='http://www.sina.com', ceo='王志东') 
  44. myWebsite(name='wangyi', url='http://www.163.com', ceo='丁磊') 
  45. '''  
  46.   
  47. #OrderedDict 对象  
  48. from collections import OrderedDict  
  49. items = (('d',3),('b',4),('a',1),('e',5),('c',2))  
  50. regular_dict = dict(items)  
  51. ordered_dict = OrderedDict(items)  
  52. print(regular_dict)  
  53. # {'a': 1, 'c': 2, 'b': 4, 'd': 3, 'e': 5}  
  54. # 可见一般的dict内部是乱序的  
  55. print(ordered_dict)  
  56. # OrderedDict([('d', 3), ('b', 4), ('a', 1), ('e', 5), ('c', 2)])  
  57. # OrderedDict是按照原来的顺序存储的  
  58.   
  59. #如果需要进行排序  
  60. ordered_dict = OrderedDict(sorted(ordered_dict.items(), key=lambda t:t[0]))  
  61. print(ordered_dict) # OrderedDict([('a', 1), ('b', 4), ('c', 2), ('d', 3), ('e', 5)])  

你可能感兴趣的:(python)