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:"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)
 

最新文章

  1. What is Away3D
  2. jQuery第一篇 (帅哥)
  3. dwr和spring的整合
  4. 8.4.1 ImageLoader
  5. js表单提交,面向对象
  6. MyBatis/Ibatis中#和$的区别
  7. ASP.NET Web API 学习【转】
  8. 使用Matrix控制图像或组件变换的步骤
  9. js和HTML结合(补充知识:如何防止文件缓存的js代码)
  10. ios UIWebview本地加载H5网页
  11. .NET 下成熟开源的BPM产品四款推荐
  12. SpringCloud的应用发布(三)vmvare+linux,xftp,xshell连接linux失败
  13. iOS 中判断应用程序是否为第一次打开
  14. JS Math方法
  15. linux下如何执行.sh文件 【转】
  16. 禁止浏览器backspace键(退格键)时跳转页面(extjs,javascript)
  17. Android图片载入框架最全解析(一),Glide的基本使用方法
  18. 转载---VisualStudioCode通过SSH远程编辑文件
  19. thinkphp openfire 添加用户 骨架
  20. [爬虫]Python爬虫基础

热门文章

  1. 使用requireJS加载不符合AMD规范的js文件:shim的使用方式和实现原理
  2. 20145306 网路攻防 web安全基础实践
  3. 20145331魏澍琛《网络对抗》Exp2 后门原理与实践
  4. 20145208蔡野 《网络对抗》逆向及BOF基础实践
  5. 逃离迷宫(BFS)题解
  6. 机器学习 MLIA学习笔记(三)之 KNN(二) Dating可能性实例
  7. JSONObject获取的值有时候不是String类型,而有时候又是String类型,怎么办呐
  8. django字段查询参数及聚合函数
  9. vs2010的VCVARS32.BAT所在位置
  10. windows 2012 R2安装SqlServer2016提示缺少KB2919355