一、各种方法介绍

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中的各种方法的更多相关文章

  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. Spring Boot - Building RESTful Web Services

    Spring Boot Building RESTful Web Services https://www.tutorialspoint.com/spring_boot/spring_boot_bui ...

  2. Python开发【模块】:Urllib(一)

    Urllib模块 1.模块说明: Urllib库是Python中的一个功能强大.用于操作的URL,并在做爬虫的时候经常要用到的库.在Python2.X中,分Urllib库和Urllib库,Python ...

  3. 【手机自动化测试】monkey测试

    1             概述 Monkey测试是Android自动化测试的一种手段.Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. 当Mon ...

  4. git-【七】bug分支

    在开发中,会经常碰到bug问题,那么有了bug就需要修复,在Git中,分支是很强大的,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉. 比如我在开发中接到一个40 ...

  5. python拼接字符串

    python拼接字符串一般有以下几种方法: 1.直接通过(+)操作符拼接 s = 'Hello' + ' ' + 'World' + '!' print(s) 输出结果:Hello World! 使用 ...

  6. Spark Streaming带状态更新

    带状态的更新是使用的updateStateByKey方法,里面传入一个函数,函数要自己写,注意需要设置checkpoint import org.apache.spark.streaming.kafk ...

  7. arthas使用介绍

    背景: 一次线上问题的综合排查排查,两个相同的系统的某个模块,数据量更少的系统查询更慢. 先说下整体思路: 查看系统整理负载,网络有100左右毫秒的延迟,看起来影响不大 查看正序运行整体情况,一次查询 ...

  8. (转)Terraform,自动化配置与编排必备利器

    本文来自作者 QingCloud实践课堂 在 GitChat 上分享 「Terraform,自动化配置与编排必备利器」 Terraform - Infrastructure as Code 什么是 T ...

  9. devise修改密码

    https://ruby-china.org/topics/1314 password/edit不是给你直接改密码用的 这个是忘记密码后,发送重置密码的邮件到你邮箱,同时生成一个token 然后你点那 ...

  10. 454 Authenti cation failed, please open smtp flag first! (Net::SMTPAuthenticationError)

    在用ruby的smtp库发送邮件的时候,出现了这个错误454 Authenti cation failed, please open smtp flag first! (Net::SMTPAuthen ...