广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python -- collection
  • 724
分享到

Python -- collection

Pythoncollection 2023-01-31 04:01:35 724人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

collection 数据容器            python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外的数据类型:  

collection 数据容器

    

        python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections

模块在这些内置数据类型的基础上,提供了几个额外的数据类型:


    namedtuple()。创建有名字域的元组子类的工厂函数。Python 2.6新增。

    deque:双端队列,类似于列表,两端进栈和出栈都比较快速。python 2.4新增。

    Counter:字典的子类,用于统计哈希对象。python 2.7新增。

    OrderedDict:字典的子类,记录了添加顺序。python 2.7新增。

    defaultdict:dict的子类,调用一个工厂函数支持不存在的值。python 2.5新增。

    还提供了抽象基类,用来测试类是否提供了特殊接口,比如是哈希或者映射。



class {typename}(tuple):   # 可命名元祖
    '{typename}({arg_list})'

        namedtuple主要用来产生可以使用名称来访问元素的数据对象,通常用来增强代码的可

        读性, 在访问一些tuple类型的数据时尤其好用。

    

    

    def _make(cls, iterable, new=tuple.__new__, len=len):

             from collections import namedtuple

            WEBsites = [
                        ('Sohu', 'Http://www.Google.com/', '张朝阳'),
                        ('Sina', 'http://www.sina.com.cn/', '王志东'),
                        ('163', 'http://www.163.com/', '丁磊')
                        ]
            Website = namedtuple('Website', ['name', 'url', 'founder'])
            for website in websites:
                website = Website._make(website)
                print(website)

               结果如下:

                Website(name='Sohu', url='http://www.google.com/', founder='张朝阳')

                Website(name='Sina', url='http://www.sina.com.cn/', founder='王志东')

                Website(name='163', url='http://www.163.com/', founder='丁磊')


    def _replace(_self, **kwds):
    def _asdict(self):

class Counter(dict):  # 计数器

     Counter() 的可用方法如下:


    def most_common(self, n=None): # 获取出现频率最高的几个元素


    def elements(self):   # 获取所有元素

      例:

        import collections

        c1=collections.Counter ('sdfsdgasdhgd')

        print c1

        print c1.most_common(3)

        for i in c1.elements():

                print i

        

        C:\Python27\python.exe "E:/python-file/learn - python.py"

        Counter({'d': 4, 's': 3, 'g': 2, 'a': 1, 'f': 1, 'h': 1})

        [('d', 4), ('s', 3), ('g', 2)]

        a

        d

        d

        d

        d

        g

        g

        f

        h

        s

        s

        s

        

        Process finished with exit code 0


    def update(*args, **kwds): # 有新添加的就添加到 collections.Counter()

            >>> c1

            Counter({'d': 4, 's': 3, 'g': 2, 'h': 1, 'f': 1, 'a': 1})

            >>> c2

            Counter({'a': 2, 'd': 1, 'c': 1, 'b': 1})

            >>> c1.update(c2)

            >>> c1

            Counter({'d': 5, 's': 3, 'a': 3, 'g': 2, 'h': 1, 'c': 1, 'b': 1, 'f': 1})


    def subtract(*args, **kwds):   # 相减 后 添加到  collections.Counter()

            >>> c1

            Counter({'d': 5, 's': 3, 'a': 3, 'g': 2, 'h': 1, 'c': 1, 'b': 1, 'f': 1})

            >>> c1.subtract(c2)

            >>> c1

            Counter({'d': 4, 's': 3, 'g': 2, 'h': 1, 'f': 1, 'a': 1, 'c': 0, 'b': 0})


    def copy(self):  # 浅层copy,只拷贝一层如有多层则一层之下默认指向深层地址

            


class OrderedDict(dict):  #  # 有序字典

                区别无序字典及有序字典的实例:

    

    import collections

    c1=collections.OrderedDict ()

    

    c1['k1']=1

    c1['k3']=1

    c1['k5']=1

    c1['k2']=1

    print c1

    c1={}

    c1['k1']=1

    c1['k3']=1

    c1['k5']=1

    c1['k2']=1

    print c1

    

    结果如下:

    OrderedDict([('k1', 1), ('k3', 1), ('k5', 1), ('k2', 1)])     ---有序字典

    {'k3': 1, 'k2': 1, 'k1': 1, 'k5': 1} ---无序字典

    

    自定义有序字典,字典变成有序的字典

    c1={}

    c1['k1']=1

    c1['k3']=3

    c1['k5']=5

    c1['k2']=2

    print c1

    li=['k1','k2','k3','k5']

    for i in li:

        print c1[i]                               

    

    C:\Python27\python.exe "E:/python-file/learn - python.py"

    {'k3': 3, 'k2': 2, 'k1': 1, 'k5': 5}

    1

    2

    3

    5

    

    Process finished with exit code 0


     有序字典方法,默认继承无序字典方法,如下:

    def clear(self): #  默认清除所有元素

            >>> c2

            OrderedDict([(0, 2), (1, 2), (2, 2)])

            >>> c2.clear()

            >>> c2

            OrderedDict()


    def copy(self): #  浅copy

            >>> c2 = c1.copy()

            >>> c2

            OrderedDict([('k4', 1), ('k2', 1), ('k3', 1), ('k5', 1))

 

    def fromkeys(cls, S, v=None): # (参见字典类)

            >>> c2=c1.fromkeys((i for i in range(3)),2)

            >>> c2

            OrderedDict([(0, 2), (1, 2), (2, 2)])


    def items(self, *args, **kwargs): #  有序字典同样具有字典的方法

            >>> c1

            OrderedDict([('k4', 1), ('k2', 1), ('k3', 1), ('k5', 1)])

            >>> c1.items()

            odict_items([('k4', 1), ('k2', 1), ('k3', 1), ('k5', 1)])


    def keys(self, *args, **kwargs): # 有序字典中所有元素的key值

            >>> c1

            OrderedDict([('k4', 1), ('k2', 1), ('k3', 1), ('k5', 1)])

            >>> c1.keys()

            odict_keys(['k4', 'k2', 'k3', 'k5'])


    def move_to_end(self, *args, **kwargs): # 将某一元素移到最后

            >>> c1

            OrderedDict([('k4', 1), ('k5', 1), ('k2', 1), ('k3', 1)])

            >>> c1.move_to_end('k5')

            >>> c1

            OrderedDict([('k4', 1), ('k2', 1), ('k3', 1), ('k5', 1)])


    def pop(self, k, d=None): #   删除某一元素,需要添加key值(见popitem)


    def popitem(self): #  删除元素,默认从最后删除无序添加key值

            >>> c1

            OrderedDict([('k4', 1), ('k5', 1), ('k2', 1), ('k3', 1), ('k1', 1)])

            >>> c1.popitem()

            ('k1', 1)

            >>> c1.pop()

            Traceback (most recent call last):

              File "<stdin>", line 1, in <module>

            TypeError: Required argument 'key' (pos 1) not found

            

    def setdefault(self, k, d=None): # 添加元素设置默认值,默认第二个参数为None

            >>> c1.setdefault(2,'v2')

            'v2'

            >>> c1

            OrderedDict([('k4', 1), ('k2', 1), ('k3', 1), ('k5', 1), (2, 'v2')])


    def update(self, *args, **kwargs): # 更新有序字典

            >>> c1

            OrderedDict([('k4', 1), ('k2', 1), ('k3', 1), ('k5', 1)])

            >>> c2

            OrderedDict([(0, 2), (1, 2), (2, 2)])

            >>> c1.update(c2)

            >>> c1

            OrderedDict([('k4', 1), ('k2', 1), ('k3', 1), ('k5', 1), (0, 2), 

                        (1, 2), (2, 2)])


    def values(self, *args, **kwargs): # 有序字典中所有元素的values值

            >>> c1

            OrderedDict([('k4', 1), ('k2', 1), ('k3', 1), ('k5', 1)])

            >>> c1.values()

            odict_values([1, 1, 1, 1])

     

class deque(object):  # 双向队列

   

    def append(self, *args, **kwargs): # 右侧添加

            >>> d2

            deque([ '>', '-', '-', '-', '<'])

            >>> d2.append('-')

            deque([ '>', '-', '-', '-', '<','-'])


    def appendleft(self, *args, **kwargs): # 左侧添加

             >>> d2

            deque([ '>', '-', '-', '-', '<'])

            >>> d2.appendleft('-')

            deque([ '-','>', '-', '-', '-', '<'])


    def clear(self, *args, **kwargs): # 清除所有元素


    def copy(self, *args, **kwargs): #   浅层copy

            >>> d2

            deque([ '>', '-', '-', '-', '<'])

            >>> d3=d2.copy()

            

    def count(self, value): # 

            >>> d2

            deque([ '>', '-', '-', '-', '<'])

            >>> d2.count('-')

            3

    

    def extend(self, *args, **kwargs): # 右侧扩展

            >>> d3

            deque(['1', '2', '3'])

            >>> d2

            deque([ '>', '-', '-', '-', '<'])

            >>> d2.extendleft(d3)

            >>> d2

            deque([ '>', '-', '-', '-','<','1', '2', '3'])


    def extendleft(self, *args, **kwargs): # 左侧扩展

            >>> d3

            deque(['1', '2', '3'])

            >>> d2

            deque([ '>', '-', '-', '-', '<'])

            >>> d2.extendleft(d3)

            >>> d2

            deque(['3','2', '1', '>', '-', '-', '-','<'])


   def index(self, value, start=None, stop=None): # 索引

            >>> d2

            deque(['3', ',', '2', ',', '1', '--', '>', '-', '-', '-', '-','<'])

            >>> d2.index('2')

            2


    def insert(self, index, p_object): # 可在指定位置插入

            >>> d3

            deque(['1', '2', '3'])

            >>> d3.insert(1,'4')

            >>> d3

            deque(['1', '4', '2', '3'])


    def pop(self, *args, **kwargs): #  右侧删除

            >>> d3

            deque(['1', '4', '2', '3'])

            >>> d3.pop()

            '3'

           

    def popleft(self, *args, **kwargs): # 左侧删除

            >>> d3.popleft()

            '1'

            >>> d3

            deque(['4', '2'])

 

    def remove(self, value): #  删除某一元素,需要加参数

            >>> d3.remove('4')

            >>> d3

            deque(['2'])


    def reverse(self): #  反转  

            >>> d3

            deque(['1', '2', '3'])

            >>> d3.reverse()

            >>> d3

            deque(['3', '2', '1'])


    def rotate(self, *args, **kwargs): #  下面这个是一个有趣的例子,主要使用了

                    deque的rotate方法来实现了一个无限循环的加载动画       

                  import sys

                        import  time

                        from collections import deque

                        de = deque('>------------<')

           while True:

                                print('\r %s ' % (''.join(de)))

                de.rotate(1)

                sys.stdout.flush()

                time.sleep(1)

          结果如下:

             >------------< 

             <>------------ 

             -<>----------- 

             --<>---------- 

             ---<>--------- 


--结束END--

本文标题: Python -- collection

本文链接: https://www.lsjlt.com/news/187935.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python -- collection
    collection 数据容器            Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外的数据类型:  ...
    99+
    2023-01-31
    Python collection
  • python模块--collection
    python的内建模块collections有几个关键的数据结构,平常在使用的时候,开发者可以直接调用,不需要自己重复制造轮子,这样可以提高开发效率。   1. deque双端队列 平常我们使用的python内置list类的append,...
    99+
    2023-01-30
    模块 python collection
  • Python collection的使用
    Python中的基本数据结构有list,dict,tuple,set。Python还有一个功能比较强大的包collections,可以处理并维护一个有序的dict,可以提高程序的运行效率。 1、collections中defau...
    99+
    2023-01-31
    Python collection
  • MongoDB将collection变为shard collection
           MongoDB随着业务量增长,可以把之前不是分片的集合变为分片集合,但是要注意的是,一旦指定shard key以后就无法直接...
    99+
    2022-10-18
  • 2011-10-05 COLLECTION
    http://www.itpub.net/thread-1499223-1-1.html 1 楼 哪一个PLSQL块执行之后会显示下面的三行数字? 0&nb...
    99+
    2022-10-18
  • Laravel Collection 基本使用
    创建集合 为了创建一个集合,可以将一个数组传入集合的构造器中,也可以创建一个空的集合,然后把元素写到集合中。Laravel 有collect()助手,这是最简单的,新建集合的方法。 $collecti...
    99+
    2023-09-18
    laravel php 开发语言
  • java collection类如何调用
    在Java中,Collection是一个接口,它定义了一组方法来操作集合对象,如添加、删除、查找等。要使用Collection类,首...
    99+
    2023-10-07
    java
  • Mybatis之association和collection用法
    目录association和collection用法1.单个关联查询association2.多个关联查询 collection3.鉴别器discriminatorassociati...
    99+
    2022-11-13
  • 进阶JAVA篇- Collection 类的常用的API与 Collection 集合的遍历方式
    目录         1.0 Collection 类的说明         1.1 Collection 类中的实例方法         2.0 Collection 集合的遍历方式(重点)         2.1 使用迭代器( Iter...
    99+
    2023-10-21
    java 开发语言
  • Java Collection集合用法详解
    目录1.集合的主要体系及分支1.1Collection集合及实现类2.List集合(List是带有索引的,所以多注意索引越界等问题)2.1 List的实现类3.Set集合3.1Has...
    99+
    2022-11-12
  • java-collection中的null,isEmpty用法
    目录collection中的null,isEmpty用法第一种情况第二种情况第三种情况CollectionUtils.isEmpty和 == null的区别本文所指的 Collect...
    99+
    2022-11-13
  • Java中如何使用Collection类
    Java中如何使用Collection类,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Collection接口Collection是最基本的集合接口,一个Collectio...
    99+
    2023-06-17
  • 【Java 基础篇】Java Collection详解
    文章目录 导言一、Collection 简介二、List 接口三、Set 接口四、Map 接口总结 导言 Java的Collection框架是一组用于存储和操作对象的接口和类。它提供了...
    99+
    2023-09-14
    java 开发语言 jvm
  • Mybatis中association和collection怎么用
    这篇文章将为大家详细讲解有关Mybatis中association和collection怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。association和collection用法1.单个关联查询...
    99+
    2023-06-29
  • MyBatis中的collection如何使用
    今天小编给大家分享一下MyBatis中的collection如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。colle...
    99+
    2023-07-02
  • Java源码解析之接口Collection
    目录一、图示二、方法定义三、超级实现类 AbstractCollection一、图示 二、方法定义 我们先想一想,公司如果要我们自己去封装一些操作数组或者链表的工具类,我么需要封装...
    99+
    2022-11-12
  • mybatis 实现多层级collection嵌套
    目录mybatis多层级collection嵌套json结构第一步查询第二步查询第三步查询(第三层查询)最后附实体截图,其实看json就可以了方式二(推荐)mybatis多层(三层)...
    99+
    2022-11-13
  • mybatis collection和association的区别解析
    目录1.collection标签1.1 相关代码和运行结果1.2 collection部分源码解析1.3 <collection>和<association>...
    99+
    2022-11-13
  • resultMap中的collection标签怎么用
    这篇文章主要介绍“resultMap中的collection标签怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“resultMap中的collection标签怎么用”文章能帮助大家解决问题。re...
    99+
    2023-06-29
  • mybatis中foreach collection的示例分析
    这篇文章主要介绍mybatis中foreach collection的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在SQL开发过程中,动态构建In集合条件查询是比较常见的用法,在Mybatis中提供了for...
    99+
    2023-05-31
    mybatis foreach collection
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作