程序笔记   发布时间:2022-07-21  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了python(三):collection模块大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

collections

  collections是日常工作中的重点、高频模块,常用类型有:

  计数器(Counter)

  双向队列(deque)

  默认字典(defaultDict)

  有序字典(orderedDict)

  可命名元组(namedtuple) 

1. Counter

  Counter作为字典Dicit()的一个子类用来进行hashtable计数,将元素进行数量统计,计数后返回一个字典,键值为元素,值为元素个数

  常用方法:

@H_904_24@most_common(int)
按照元素出现的次数进行从高到低的排序,返回前int个元素的字典
elements 返回经过计算器Counter后的元素,返回的是一个迭代器
update 和set集合的update一样,对集合进行并集更新
substract update类似,只是update是做加法,substract做减法,从另一个集合中减去本集合的元素
iteritems 返回由Counter生成的字典的所有item
iterkeys 返回由Counter生成的字典的所有key
itervalues 返回由Counter生成的字典的所有value

  示例:

python(三):collection模块

#coding=utf-8

from collections import Counter

str = "abcbcaccbbad"
li = ["a","b","c","a","b","b"]
d = {"1":3, "3":2, "17":2}

#Counter获取各元素的个数,返回字典
print ("Counter(s):", Counter(str))
print ("Counter(li):", Counter(li))
print ("Counter(d):", Counter(d))

#most_common(int)按照元素出现的次数进行从高到低的排序,返回前int个元素的字典
d1 = Counter(str)
print ("d1.most_common(2):",d1.most_common(2))

#elements返回经过计算器Counter后的元素,返回的是一个迭代器
print ("sorted(d1.elements()):", sorted(d1.elements()))
print ('''("".join(d1.elements())):''',"".join(d1.elements()))
#若是字典的话返回value个key
d2 = Counter(d)
print("若是字典的话返回value个key:", sorted(d2.elements()))

#update和set集合的update一样,对集合进行并集更新
print ("d1.update("sas1"):",d1.update("sas1"))

python(三):collection模块

>>>> Counter(s): Counter({'b': 4, 'c': 4, 'a': 3, 'd': 1})>>>> Counter(li): Counter({'b': 3, 'a': 2, 'c': 1})>>>> Counter(d): Counter({'1': 3, '3': 2, '17': 2})>>>> d1.most_common(2): [('b', 4), ('c', 4)]>>>> sorted(d1.elements()): ['a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'd']>>>> ("".join(d1.elements())): aaabbbbccccd>>>> ['1', '1', '1', '17', '17', '3', '3']

2. deque

  deque属于高性能的数据结构之一,常用方法如下:

append 队列右边添加元素
appendleft 队列左边添加元素
clear 清空队列中的所有元素
count 返回队列中包含value的个数
extend 队列右边扩展,可以是列表、元组或字典,如果是字典则将字典的key加入到deque
extendleft 同extend,在左边扩展
pop 移除并返回队列右边的元素
popleft 移除并返回队列左边的元素
remove(value) 移除队列第一个出现的元素
reverse 队列的所有元素进行反转
rotate(n) 对队列数进行移动

3. defaultDict

  默认字典,字典的一个子类,继承所有字典的方法,默认字典在进行定义初始化的时候得指定字典值有默认类型

python(三):collection模块

Dic = defaultDict(Dict)

  Dic["k1"].update({"asdsa":"123"}) 

  print (Dic)

>>> defaultDict(<class 'Dict'>, {'k1': {'asdsa': '123'}})

python(三):collection模块

  注:字典Dic在定义的时候就定义好了值为字典类型,然现在字典中还没有键值 k1,但仍然可以执行字典的update方法. 这种操作方式在传统的字典类型中是无法实现的,必须赋值以后才能进行值得更新操作,否则会报错

4. orderedDict

  有序字典也是字典的一个子类

  传统方法进行字典排序

python(三):collection模块

#定义传统字典  
Dic1 = Dict()  
# 按顺序添加字典内容  
Dic1['a'] = '123'  
Dic1['b'] = 'jjj'  
Dic1['c'] = '394'  
Dic1['d'] = '999'  
print(Dic1)    # 结果: {'a': '123', 'c': '394', 'b': 'jjj', 'd': '999'}  
# 排序  
Dic1_key_list = []  
for k in Dic1.keys():  
    Dic1_key_list.append(k)  
Dic1_key_list.sort()  
for key in Dic1_key_list:  
    print('Dic1字典排序结果 %s:%s' %(key,Dic1[key]))  

python(三):collection模块

  使用orderedDict对字典进行排序

python(三):collection模块

#定义有序字典  
Dic2 = orderedDict()  
Dic2['a'] = '123'  
Dic2['b'] = 'jjj'  
Dic2['c'] = 'abc'  
Dic2['d'] = '999'  
for k, v in Dic2.iteritems():  
    print('有序字典:%s:%s' %(k,v)) 

python(三):collection模块

5. namedtuple

  namedtuple由自己的类工厂namedtuple()进行创建,而不是由表中的元组进行初始化,通过namedtuple创建类的参数包括类名称和一个包含元素名称的字符串

  常用方法示例:

python(三):collection模块

#coding=utf-8

from collections import namedtuple

p = namedtuple("person", "name,age,sex")
print (type(p))

zhanglin = p("zhanglin",30,"male")
print(zhanglin)
print(zhanglin.name,zhanglin.agE)

python(三):collection模块

 >>> <class 'type'> >>> person(name='zhanglin', age=30, sex='male') >>> zhanglin 30

  rename参数使用

  使用Namedtuple()来创建类的时候,传递的成员属性参数名称不能非法(不能重复,不能为系统标识符),否则会报错

python(三):collection模块

try:
    pp = namedtuple("person","name,age,class,sex")
    print(pp._fields)
    lili = pp("lili",20,"aa","male")
except Exception as e:
    print("error",E)

python(三):collection模块

 >>> error Type names and field names cAnnot be a keyword: 'class'

  输入错误非我们可以控制,namedtuple提供rename=True参数会使系统自动的将错误的参数通过“下划线+参数索引”的方式将参数名称替换

python(三):collection模块

try:
    pp = namedtuple("person","name,age,class,sex",rename=TruE)
    print(pp._fields)
    lili = pp("lili",20,"aa","male")
except Exception as e:
    print("error",E)

python(三):collection模块

 >>> ('name', 'age', '_2', 'sex')

大佬总结

以上是大佬教程为你收集整理的python(三):collection模块全部内容,希望文章能够帮你解决python(三):collection模块所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。