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 ...
随机推荐
- PHP面向对象详解:继承、封装与多态
首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一系列个体的集合,类是一个抽象的概念2.什么是对象?从类中拿到的具有具体属性值得个体, ...
- Integer.valueof 和 Integer.parseInt
System.out.println(Integer.valueOf("127")==Integer.valueOf("127")); System.out.p ...
- 将expression转化为数据类型int时发生算术溢出错误
在SQL Server 中,某列的数据都在int范围之内,但是使用sum聚集函数求该列和的时候,出现“将expression转化为数据类型int时发生算术溢出错误”. 问题在于定义的数据类型: 首先, ...
- [随感]GIS开发的困惑
从事GIS应用开发也有3年了,但是做了些东西自己始终不满意,不是不稳定就是效率低,不是功能杂就是不实用! 首先是AE开发,我必须说自己很欣赏ArcGIS的软件设计架构和思想.但是在开发的过程中也确实遇 ...
- python模块之pyMySql
目录: 安装 使用 一.安装 本模块为python第三方模块,需要单独安装.作用为调用mysql接口执行模块 pip3 install pyMySql 二.使用 1.执行SQL #!/usr/bin/ ...
- google浏览器插件安装
1:安装本地插件,直接将下载好的crx插件拖入到 chrome://extensions/ 的空白处 http://www.cnplugins.com/tool/outline-instal ...
- E题:Water Problem(快速幂模板)
题目大意:原题链接 题解链接 解题思路:令x=x-1代入原等式得到新的等式,两式相加,将sin()部分抵消掉,得到只含有f(x)的状态转移方程f(x+1)=f(x)+f(x-2)+f(x-3),然后 ...
- LFD,非官方的Windows二进制文件的Python扩展包
LFD,非官方的Windows二进制文件的Python扩展包 LFD,非官方版本.32和64位.Windows.二进制文件.科学开源.Python扩展包 克里斯托夫·戈尔克(by Christoph ...
- python openpyxl 封装Execl常用操作的方法
封装Excel操作方法:先装openpyxl:pip install openpyxl==2.4.5(可以指定版本) 封装脚本:#encoding=utf-8 from openpyxl import ...
- Vue学习笔记之表单绑定输入
vue的核心:声明式的指令和数据的双向绑定. 那么声明式的指令,已经给大家介绍完了.接下来我们来研究一下什么是数据的双向绑定? 另外,大家一定要知道vue的设计模式:MVVM M是Model的简写,V ...