首页 > 编程语言 >Python之collections模块

Python之collections模块

时间:2023-03-21 09:23:19浏览次数:36  
标签:Python k2 k1 collections 模块 print new 字典 dict

简介

collections 是 python 的内置模块,提供了很多方便且高性能的关于集合的操作,掌握这些知识有助于提高代码的性能和可读性。

常用功能

计数器(Counter)
​ 双端队列(deque)
​ 默认字典(defaultdict)
​ 有序字典(OrderedDict)
​ 具名元组(namedtuple)

计数器(Counter)

res = 'RUN FAST, HIT FAST, WIN FAST'

统计字符串中所有字符的出现次数

传统写法

new_dict = {}for i in res:
    if i not in new_dict:
        new_dict[i] = 1
    else:
        new_dict[i] += 1print(new_dict)

 # {'R': 1, 'U': 1, 'N': 2, ' ': 5, 'F': 3, 'A': 3, 'S': 3, 'T': 4, ',': 2, 'H': 1, 'I': 2, 'W': 1}

Counter写法

from collections import Counter
r = Counter(res)print(r)        # Counter({' ': 5, 'T': 4, 'F': 3, 'A': 3, 'S': 3, 'N': 2, ',': 2, 'I': 2, 'R': 1, 'U': 1, 'H': 1, 'W': 1})print(r.get('F'))   # 5 可以当成字典使用

双端队列(deque)

队列

import queue
q = queue.Queue(3)  # 指定最大存放元素个数 3# 存放元素
q.put(111)
q.put(222)
q.put(333)# q.put(444)    # 如果队列满了 继续添加则原地等待 相当于一直等待不往下运行# 获取元素print(q.get())print(q.get())print(q.get())# print(q.get())  # 如果队列空了 继续获取则原地等待 相当于一直等待不往下运行

双端队列

from collections import deque
d = deque([1, 2, 3])
d.append(4)print(d)    # deque([1, 2, 3, 4])
d.appendleft(0)	# 从左加print(d)    # deque([0, 1, 2, 3, 4])
print(d.pop())  # 4  默认从右弹出元素print(d.popleft())  # 0  从左弹出元素

默认字典(defaultdict)

有如下值集合 [11,22,33,44,55,67,77,88,99],
将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

普通字典

l1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
new_dict = {'k1': [], 'k2': []}for i in l1:
    if i > 66:
        new_dict['k1'].append(i)
    else:
        new_dict['k2'].append(i)print(new_dict)    # {'k1': [77, 88, 99], 'k2': [11, 22, 33, 44, 55, 66]}

默认字典

from collections import defaultdict
l2 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
new_dict2 = defaultdict(list)   # 字典所有的值默认都是列表{'': [], '': []}for i in l2:
    if i > 66:
        new_dict2['k1'].append(i)
    else:
        new_dict2['k2'].append(i)print(new_dict2)    # defaultdict(<class 'list'>, {'k2': [11, 22, 33, 44, 55, 66], 'k1': [77, 88, 99]})

有序字典(OrderedDict)

普通字典:内部是无序的

d1 = dict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])print(d1)  # {'k2': 'v2', 'k1': 'v1', 'k3': 'v3'}  # 内部无序 每次打印顺序都可能与上一次不同print(d1.keys())   # dict_keys(['k1', 'k2', 'k3'])

有序字典

from collections import OrderedDict
d2 = OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])print(d2)   # OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
d2['k1'] = 111print(d2)  # OrderedDict([('k1', 111), ('k2', 'v2'), ('k3', 'v3')])print(d2.keys())    # odict_keys(['k1', 'k2', 'k3'])

具名元组(namedtuple)

# 生成可以使用名字来访问元素内容的tuplefrom collections import namedtuple# 1.先产生一个元组对象模板
point = namedtuple('长宽高', 'x, y, z')# 2.创建数据
p1 = point('5cm', '1cm', '4cm')
p2 = point(7, 8, 9)print(p1, p2)       # 长宽高(x='5cm', y='1cm', z='4cm') 长宽高(x=7, y=8, z=9)print(p1.x)         # 5cmprint(p1.y)         # 1cm

作者:陈超

标签:Python,k2,k1,collections,模块,print,new,字典,dict
From: https://www.cnblogs.com/DTCLOUD/p/17238738.html

相关文章

  • python爬虫如何构建基础爬虫思路
    对于长期游弋于大数据中的程序来说,正常来说基础爬虫有5个模块,通过多个文件相互间配合,然而实现一个相对完善的爬虫方案,以便于后期做更完善的爬虫方案做准备。这里目的是爬......
  • python基础
    基本数据类型数字(number)字符串列表字典元组集合循环语句......
  • python基础语法学习
    这里主要记录主要的python语法。1.编码python3默认时UTF-8编码,也可以为源文件指定不同的编码(使用Windows-1252字符集中的字符编码):#-*-coding:cp-1252-*-2.注......
  • python 报错"ValueError: dictionary update sequence element #0 has length 6; 2 is
    python报错"ValueError:dictionaryupdatesequenceelement#0haslength6;2isrequired"现象   分析根据报错分析,应该是字典或格式有问题,检查发现LOGGING......
  • PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SV
    全文下载链接:http://tecdat.cn/?p=26219最近我们被客户要求撰写关于银行机器学习的研究报告,包括一些图形和统计输出。该数据与银行机构的直接营销活动相关,营销活动基于电......
  • python学习第一天
    1.python的数据类型(1)python的数据类型不需要单独定义,可以直接对变量赋值而自动判断该类型(我们可以通过type进行查看);(2)一般的数据类型:int(整型),str(字符串类型),bool(布尔类型),fl......
  • python命令
    我们在使用npminstall安装模块的模块的时候,一般会使用下面这几种命令形式:npminstallmoduleName#安装模块到项目目录下npminstall-gmoduleName#-g的意思......
  • python - tesseract-ocr
    1.安装tesseract-ocr下载链接:https://digi.bib.uni-mannheim.de/tesseract/安装后添加环境变量测试安装情况2.安装pytesseractpip3installpytesseract-ihttps......
  • 使用python来模拟端口被占用的测试场景
    一、测试场景拿到一个运维如软件,做安装部署测试。其中,测试过程中存在一种场景:由于环境清理不干净等原因,导致软件安装部署时,某个组件的端口号被占用,而导致部署失败的情况。......
  • 使用 Python 实现一个 RPC 框架
    1.概述RPC是什么?RPC(RemoteProcedureCallProtocol),RPC是指远程过程调用,比如现在有两台服务器A、B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方......