当前位置: 首页 » 综合知识 » it知识 » 正文

Python的模块collections怎么使用

发布时间:2023-07-22 以下文章来源于网友投稿,内容仅供参考!

1.创建升级版的元组--namedtupe

Python的元组(1,2,3)具有不可变性,但是单独的元组在无法满足现有需求时,可以使用升级版的元组,使用namedtupe可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。

#!/usr/bin/env python

# -*- coding:utf-8 -*-

__author__ = "问道编程"

__date__ = "2022/03/18 12:37"

from collections import namedtuple

Point = namedtuple('Ponit', ['x', 'y'])  # 实例化一个tupe对象,并规定了对象数量以及属性:x、y

p = Point(1,3)   # 赋值

print(p.x)   # 通过属性访问数据

print(p.y)

2.创建升级版的列表--deque

使用list存储数据时,可以非常方便的进行查询和尾部操作(append、pop),但是在头部添加、删除时效率很低(最大时间复杂度为n),所以有了deque,可以实现高效的头、尾的操作,适合用于队列和栈:

from collections import deque

q = deque([1,2,3])

q.append(6)   # [1,2,3,6]  同list一样进行尾部添加、删除操作

q.pop() # [1,2,3]

q.appendleft('x')  # ['x',1,2,3]  头部添加

q.popleft()  # [1,2,3]  头部删除

3.创建升级版字典--defaultdict

常用的dict使用键值对存储数据,但当使用key访问匹配的值,而key不存在时会报错,而使用defaultdict可以规定一个默认值,当使用不存在的key查询字典的值时,会返回一个指定的默认值:

from collections import defaultdict

d = defaultdict(lambda: 'N/A')   # 创建defaultdict对象,是字典类型的子集,并规矩默认值是   N/A

d['a'] = 1

print(d['a'])  # 1   正常输出

print(d['b'])  # N/A key不存在时,输出默认值

4.创建有顺序的字典--OrderedDict

常用的dict是不记录键值对顺序的,使用OrderedDict可以创建相对有序的字典,该类型可记录字典的输入顺序,但不能自动进行排序:

from collections import OrderedDict

d = OrderedDict()

d['a'] = 1

d['b'] = 2

print(d.keys())  # ['a','b'] 会按照key值的录入顺序进行打印

5.创建多个字典的映射--ChainMap

官方解释:一个 ChainMap 类是为了将多个映射快速的链接到一起,这样它们就可以作为一个单元处理。它通常比创建一个新字典和多次调用 update() 要快很多。

通俗的说,是创建一将多个字典链接到一起的映射,底层通过list实现,查询时,从第一个字典映射开始查,如果第一个字典没有,查询第二个,依次类推,但是更新、删除数据时仅对于第一个字典映射操作。

通常在进行拼接命令行时,可以对参数进行优先选择,比如用户输入数据、环境传入、默认值。

参考:https://docs.python.org/zh/3/library/collections.html

6.功能强大的列表计数功能--Counter

from collections import Counter

arr = [1,2,3,3,3,6,2,2,2]  # 1出现1次,2出现4次,3出现3次,6出现1次

print(arr.count(3))   # 3  可以使用list的count方法获取指定值的出现次数

cou = Counter(arr)

pirnt(cou)  # Counter({3: 3, 2: 2, 1: 1, 5: 1, 6: 1})  属于字典的子集

for k,v in cou.items():

    print(k,v)       # 对Counter进行遍历,打印结果

print(cou.mostmon(2)) # [(3,3),(2,2)]  返回出现次数最高的前两个数字及次数

  • • Linux Ecdsa密钥长度选择有何依据

    在Linux

  • • Linux Khook在内核监控中的应用如何

    Linux

  • • Linux Gsoap是否支持异步通信

    GSOAP是

  • • Linux Coremail如何提升用户体验

    提升Linu

  • • Linux Ecdsa算法有哪些局限性

    ECDSA

  • 哎呀音乐钢琴键盘学习《 钢琴主人训练营》 西瓜学琴
    郭蝈 陪练钢琴 30节课时 考级刚需 让孩子每一次练琴都是高质量的
    30天轻松学会五线谱 流行钢琴自学初级教程 牙牙学琴
    流行爵士钢琴实战技巧VIP课 - 继伟 哎呀音乐
    【海上钢琴师】原版 MT1990钢琴谱
    百首经典流行钢琴实战曲集 - 继伟
    雷费尔德电钢琴重锤88键专业考级儿童初学者数码电子钢琴家用
    小练咖 真人钢琴陪练 1v1服务 2999随时退 1课时50分钟 考级刚需
    雅马哈电钢琴88键重锤CLP735智能数码电子钢琴家用专业初学者考级
    【原装进口】Yamaha/雅马哈钢琴 b121 SC2原声静音钢琴
  • 珠海专业调钢琴
  • 天津宝坻区调钢琴
  • 天津静海区钢琴调音
  • 成都简阳市钢琴调律
  • 大连瓦房店市钢琴调音
  • 眉山调钢琴联系方式
  • 惠州大亚湾钢琴调琴师
  • 长治调琴师
  • 厦门湖里区钢琴调音师
  • 上海普陀区钢琴调音师