一、各种方法介绍

Counter    统计个数   elements  most_common  subtract

defaultdict   字典默认值

ChainMap    合并多个映射对象(字典)

OrderdDict     有顺序的字典

deque      双向队列,可限制长度 append,appendleft,ratote

namedtuple      命名元祖

二、代码部分

  1. from collections import Counter, defaultdict, ChainMap, OrderedDict, deque, namedtuple
  2. "1.Counter"
  3. # 三个方法,在前面的博客词频统计有学习过。
  4. s = 'de8g love python so much'
  5. counter = Counter(s)
  6. # print(counter, type(counter))
  7. # print(list(counter.elements()))
  8. print(counter.most_common(5)) # 排序
  9. counter.subtract('o') # 对某一个统计减少一次
  10. print(counter.most_common(5)) # 排序
  11. "2. 默认字典"
  12. # 默认字典defaultdict 在lambda中学习过
  13. defaultdict(lambda: 0)
  14. defaultdict(lambda: 'abc')
  15. c = defaultdict(lambda: (3,6))
  16. c['a']
  17. print(c)
  18. # 默认字典在传统的统计里面使用
  19. s = 'de8ug loves you so de8ug loves you so much you so much much '
  20. # count_spilt = {}
  21. dc_words = defaultdict(int) # 或者 lambda: 0
  22. dc_words[10]
  23. for i in s.split(' '):
  24. # if i in count_spilt:
  25. # count_spilt[i] += 1
  26. # else:
  27. # count_spilt[i] = 1
  28. dc_words[i] += 1
  29. print(dc_words)
  30. # 默认字典的赋值为空列表
  31. line = [(1,2),(1,3),(3,6),(4,7),(3,9),(4,9),(5,10)]
  32. # 把相同x的y 追加到列表中
  33. # line_new = {1:[2,3],3:{6,9}}
  34. line_new = {}
  35. for x,y in line:
  36. if x not in line_new:
  37. line_new[x] = [y]
  38. else:
  39. line_new[x].append(y)
  40. print(line_new)
  41. # -----------------------
  42. line_dic = defaultdict(list) # 新做法
  43. for x, y in line:
  44. line_dic[x].append(y)
  45. print(line_dic)
  46. "3. ChainMap "
  47. # 把两个字典组合起来
  48. d1 = {'debug':1,"louhui":2,"diaosi":3}
  49. d2 = {1: [2, 3], 3: [6, 9], 4: [7, 9], 5: [10]}
  50. chain = ChainMap(d1,d2)
  51. d3 = {'louhui':'shuai', 'caoyu':4, 1:""}
  52. chain.update(d3)
  53. print(chain)
  54. "4. OrderDict"
  55. # 在python3 字典就是有序的,但是我们不能依赖他,可能会变化
  56. # 传统做法
  57. dict2 = {'': 2,'a': 3,'de8ug': 2,'e': 8,'k': 9,'loves': 2,'much': 3,'so': 3,'you': 3}
  58. keys = dict2.keys()
  59. sorted(keys)
  60. for k in keys:
  61. print(k, dict2['e'])
  62. # 使用OrderDict
  63. dd = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
  64. order_dic = Orderdd = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
  65. #按key排序
  66. kd = OrderedDict(sorted(dd.items(), key=lambda t: t[0]))
  67. #按照value排序
  68. vd = OrderedDict(sorted(dd.items(),key=lambda t:t[1]))
  69. "5. deque"
  70. # deque - double-end que.双向队列,支持线程安全
  71. de = deque()
  72. de.append(1)
  73. de.append(2)
  74. de.appendleft(3)
  75. print(de)
  76. de1 = deque([1,2,3,4,5,6,7], 7)
  77. print(de1)
  78. de1.rotate(3) # 旋转
  79. print(de1)
  80. # 另外一个作用,tail类型。输出文件的最后几行
  81. def tail_file(filename, n):
  82. with open(filename, 'r') as f:
  83. return deque(f, n)
  84. print(tail_file('/Users/lh/my_learn_python/01-python/123.txt', 2))
  85. "6. nametuple"
  86. # 就是给元祖每个变量定义一个名字
  87. # 三种命名格式
  88. Point = namedtuple('Point', 'm,n')
  89. Point = namedtuple('Point', 'm n')
  90. Point = namedtuple('Point', ['x', 'y'])
  91. # Ponit=namedtuple('Point-LH','x,y')
  92. p = Point(1,2)
  93. print(p)
  94. print(p.x)

Collections中的各种方法的更多相关文章

  1. 关于Collections中的sort()方法总结

    用Java集合中的Collections.sort方法对list排序的两种方法 本文部分引用自:http://my.oschina.net/leoson/blog/131904 用Collection ...

  2. Collections中的实用方法

    总结一下java.util.Collections类内部的静态方法. checkedCollection(Collection<T> , Class<T> type) chec ...

  3. C#中==与Equals方法的区别

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Console ...

  4. 2.C#中泛型在方法Method上的实现

    阅读目录   一:C#中泛型在方法Method上的实现 把Persion类型序列化为XML格式的字符串,把Book类型序列化为XML格式的字符串,但是只写一份代码,而不是public static s ...

  5. EF封装类 增加版,增加从缓存中查找数据方法,供参考!

    EF封装类 增加版,增加从缓存中查找数据方法,供参考! 这个类是抽象类,我这里增加了需要子类验证的方法ValidateEntity,方便扩展,若想直接使用该类,可以将该类更改成静态类,里面所有的方法都 ...

  6. 用JQuery中的Ajax方法获取web service等后台程序中的方法

    用JQuery中的Ajax方法获取web service等后台程序中的方法 1.准备需要被前台html页面调用的web Service,这里我们就用ws来代替了,代码如下: using System; ...

  7. Python元类实践--自己定义一个和collections中一样的namedtuple

    大家可能很熟悉在collections模块中有一个很好用的扩展数据类型-namedtuple. 如果你还不知道这个类型,那么请翻看标准手册. 我利用元类轻松定义一个namedtuple. 先把代码贴上 ...

  8. Java——String类中的compareTo方法总结

    String类的定义:    java.lang  类 String   java.lang.Object      java.lang.String 所有已实现的接口:Serializable, C ...

  9. python3 开发面试题(collections中的Counter)6.7

    ''' 编写Python脚本,分析xx.log文件,按域名统计访问次数 xx.log文件内容如下: https://www.sogo.com/ale.html https://www.qq.com/3 ...

随机推荐

  1. flight framework 核心解读

    http://blog.csdn.net/sky_zhe/article/details/38906689?utm_source=tuicool&utm_medium=referral

  2. scrapy爬虫系列之开头--scrapy知识点

    介绍:Scrapy是一个为了爬取网站数据.提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速抓取.Scrapy使用了Twisted异步网络框架,可以加快我们的下载速度. 0.说明: ...

  3. 升级mac xcode打包证书报错 git 报错

    reset tryAgain git 在钥匙串中找不到指定的项  重新配置公钥撕咬 SSH keys An SSH key allows you to establish a secure conne ...

  4. jquery 获取对象

    jquery 获取对象 1.引用this作为对象时,必须以$(this)的形式变为对象目标,否则,无法识别,会报错“ has no method”

  5. Tickets---hdu1260 (简单dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1260 题意就是有n个人排队买票,每个人需要的时间是a[i] (1=< i <=N),但是现 ...

  6. oracle(十二)redo 与 undo

    1.undo:回滚未提交的事务.未提交前,内存不够用时,DBWR将脏数据写入数据文件中,以腾出内存空间. 这就是undo存在的原因. redo:恢复所有已提交的事务 2.实例失败(如主机掉电)可能出现 ...

  7. JAVA 线程状态转换

    Thread类中State枚举定义: public enum State { /** * Thread state for a thread which has not yet started. */ ...

  8. PAT 1102 Invert a Binary Tree[比较简单]

    1102 Invert a Binary Tree(25 分) The following is from Max Howell @twitter: Google: 90% of our engine ...

  9. 如何在编辑框中使用IAutoComplete接口(转载)

    出自:http://www.vckbase.com/index.php/wv/27.html 如果可能我想用打包类来实现.唉!,就叫我封装先生吧. 你算是找对地方了.但是我要先声明我的解决办法不是你所 ...

  10. iOS动画进阶 - 手摸手教你写ShineButton动画

    移动端访问不佳,请访问我的个人博客 前段时间在github上看见一个非常nice的动画效果,可惜是安卓的,想着用swift写一个iOS版的,下下来源代码研究了一下,下面是我写代码的心路历程 先上图和d ...