Collections中的各种方法
一、各种方法介绍
Counter 统计个数 elements most_common subtract
defaultdict 字典默认值
ChainMap 合并多个映射对象(字典)
OrderdDict 有顺序的字典
deque 双向队列,可限制长度 append,appendleft,ratote
namedtuple 命名元祖
二、代码部分
- from collections import Counter, defaultdict, ChainMap, OrderedDict, deque, namedtuple
- "1.Counter"
- # 三个方法,在前面的博客词频统计有学习过。
- s = 'de8g love python so much'
- counter = Counter(s)
- # print(counter, type(counter))
- # print(list(counter.elements()))
- print(counter.most_common(5)) # 排序
- counter.subtract('o') # 对某一个统计减少一次
- print(counter.most_common(5)) # 排序
- "2. 默认字典"
- # 默认字典defaultdict 在lambda中学习过
- defaultdict(lambda: 0)
- defaultdict(lambda: 'abc')
- c = defaultdict(lambda: (3,6))
- c['a']
- print(c)
- # 默认字典在传统的统计里面使用
- s = 'de8ug loves you so de8ug loves you so much you so much much '
- # count_spilt = {}
- dc_words = defaultdict(int) # 或者 lambda: 0
- dc_words[10]
- for i in s.split(' '):
- # if i in count_spilt:
- # count_spilt[i] += 1
- # else:
- # count_spilt[i] = 1
- dc_words[i] += 1
- print(dc_words)
- # 默认字典的赋值为空列表
- line = [(1,2),(1,3),(3,6),(4,7),(3,9),(4,9),(5,10)]
- # 把相同x的y 追加到列表中
- # line_new = {1:[2,3],3:{6,9}}
- line_new = {}
- for x,y in line:
- if x not in line_new:
- line_new[x] = [y]
- else:
- line_new[x].append(y)
- print(line_new)
- # -----------------------
- line_dic = defaultdict(list) # 新做法
- for x, y in line:
- line_dic[x].append(y)
- print(line_dic)
- "3. ChainMap "
- # 把两个字典组合起来
- d1 = {'debug':1,"louhui":2,"diaosi":3}
- d2 = {1: [2, 3], 3: [6, 9], 4: [7, 9], 5: [10]}
- chain = ChainMap(d1,d2)
- d3 = {'louhui':'shuai', 'caoyu':4, 1:""}
- chain.update(d3)
- print(chain)
- "4. OrderDict"
- # 在python3 字典就是有序的,但是我们不能依赖他,可能会变化
- # 传统做法
- dict2 = {'': 2,'a': 3,'de8ug': 2,'e': 8,'k': 9,'loves': 2,'much': 3,'so': 3,'you': 3}
- keys = dict2.keys()
- sorted(keys)
- for k in keys:
- print(k, dict2['e'])
- # 使用OrderDict
- dd = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
- order_dic = Orderdd = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
- #按key排序
- kd = OrderedDict(sorted(dd.items(), key=lambda t: t[0]))
- #按照value排序
- vd = OrderedDict(sorted(dd.items(),key=lambda t:t[1]))
- "5. deque"
- # deque - double-end que.双向队列,支持线程安全
- de = deque()
- de.append(1)
- de.append(2)
- de.appendleft(3)
- print(de)
- de1 = deque([1,2,3,4,5,6,7], 7)
- print(de1)
- de1.rotate(3) # 旋转
- print(de1)
- # 另外一个作用,tail类型。输出文件的最后几行
- def tail_file(filename, n):
- with open(filename, 'r') as f:
- return deque(f, n)
- print(tail_file('/Users/lh/my_learn_python/01-python/123.txt', 2))
- "6. nametuple"
- # 就是给元祖每个变量定义一个名字
- # 三种命名格式
- Point = namedtuple('Point', 'm,n')
- Point = namedtuple('Point', 'm n')
- Point = namedtuple('Point', ['x', 'y'])
- # Ponit=namedtuple('Point-LH','x,y')
- p = Point(1,2)
- print(p)
- print(p.x)
Collections中的各种方法的更多相关文章
- 关于Collections中的sort()方法总结
用Java集合中的Collections.sort方法对list排序的两种方法 本文部分引用自:http://my.oschina.net/leoson/blog/131904 用Collection ...
- Collections中的实用方法
总结一下java.util.Collections类内部的静态方法. checkedCollection(Collection<T> , Class<T> type) chec ...
- C#中==与Equals方法的区别
using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Console ...
- 2.C#中泛型在方法Method上的实现
阅读目录 一:C#中泛型在方法Method上的实现 把Persion类型序列化为XML格式的字符串,把Book类型序列化为XML格式的字符串,但是只写一份代码,而不是public static s ...
- EF封装类 增加版,增加从缓存中查找数据方法,供参考!
EF封装类 增加版,增加从缓存中查找数据方法,供参考! 这个类是抽象类,我这里增加了需要子类验证的方法ValidateEntity,方便扩展,若想直接使用该类,可以将该类更改成静态类,里面所有的方法都 ...
- 用JQuery中的Ajax方法获取web service等后台程序中的方法
用JQuery中的Ajax方法获取web service等后台程序中的方法 1.准备需要被前台html页面调用的web Service,这里我们就用ws来代替了,代码如下: using System; ...
- Python元类实践--自己定义一个和collections中一样的namedtuple
大家可能很熟悉在collections模块中有一个很好用的扩展数据类型-namedtuple. 如果你还不知道这个类型,那么请翻看标准手册. 我利用元类轻松定义一个namedtuple. 先把代码贴上 ...
- Java——String类中的compareTo方法总结
String类的定义: java.lang 类 String java.lang.Object java.lang.String 所有已实现的接口:Serializable, C ...
- python3 开发面试题(collections中的Counter)6.7
''' 编写Python脚本,分析xx.log文件,按域名统计访问次数 xx.log文件内容如下: https://www.sogo.com/ale.html https://www.qq.com/3 ...
随机推荐
- flight framework 核心解读
http://blog.csdn.net/sky_zhe/article/details/38906689?utm_source=tuicool&utm_medium=referral
- scrapy爬虫系列之开头--scrapy知识点
介绍:Scrapy是一个为了爬取网站数据.提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速抓取.Scrapy使用了Twisted异步网络框架,可以加快我们的下载速度. 0.说明: ...
- 升级mac xcode打包证书报错 git 报错
reset tryAgain git 在钥匙串中找不到指定的项 重新配置公钥撕咬 SSH keys An SSH key allows you to establish a secure conne ...
- jquery 获取对象
jquery 获取对象 1.引用this作为对象时,必须以$(this)的形式变为对象目标,否则,无法识别,会报错“ has no method”
- Tickets---hdu1260 (简单dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1260 题意就是有n个人排队买票,每个人需要的时间是a[i] (1=< i <=N),但是现 ...
- oracle(十二)redo 与 undo
1.undo:回滚未提交的事务.未提交前,内存不够用时,DBWR将脏数据写入数据文件中,以腾出内存空间. 这就是undo存在的原因. redo:恢复所有已提交的事务 2.实例失败(如主机掉电)可能出现 ...
- JAVA 线程状态转换
Thread类中State枚举定义: public enum State { /** * Thread state for a thread which has not yet started. */ ...
- PAT 1102 Invert a Binary Tree[比较简单]
1102 Invert a Binary Tree(25 分) The following is from Max Howell @twitter: Google: 90% of our engine ...
- 如何在编辑框中使用IAutoComplete接口(转载)
出自:http://www.vckbase.com/index.php/wv/27.html 如果可能我想用打包类来实现.唉!,就叫我封装先生吧. 你算是找对地方了.但是我要先声明我的解决办法不是你所 ...
- iOS动画进阶 - 手摸手教你写ShineButton动画
移动端访问不佳,请访问我的个人博客 前段时间在github上看见一个非常nice的动画效果,可惜是安卓的,想着用swift写一个iOS版的,下下来源代码研究了一下,下面是我写代码的心路历程 先上图和d ...