zoukankan      html  css  js  c++  java
  • collections 数据结构模块namedtuple

    namedtuple类

    导入模块

    from collections import namedtuple

    使用方法及说明

    #pycharm 里按住 ctrl键点击 collections可查看源码

    #collections数据结构
    #__all__ = ['deque', 'defaultdict', 'namedtuple', 'UserDict', 'UserList','UserString', 'Counter', 'OrderedDict', 'ChainMap']


    使用说明:

    #猜包功能
    name = ("lijie",'ll') user = ("aa",23,189,'boddy') username,age,height,edu = user print (username,age,height,edu)
    打印结果:
    aa 23 189 boddy

    #另一种方法 username,*other = user print (username,other)

    打印结果:

    aa [23, 189, 'boddy']

    namedtuple

    功能说明:

    相当于创建一个类,并调用类的属性的值

    #传统类的属性值调用
    class User1(object):
        def __init__(self,name,age,height):
            self.name = name
            self.age = age
            self.height = height
    
    常规操作
    #使用namedtuple,namedtuple是tuple的子类,相比于class,节省空间,代码变少,使用方法如下:
    User = namedtuple("user",['name','age','height'])    #相当于类的初始化,初始化变量信息 user = User(name='test',age=23,height=111)        #给各参数赋值 print (user.name,user.age,user.height)           #直接打印类的属性的值
    #增加一列(
    *args方式,元组)
    User
    = namedtuple("user",['name','age','height',"edu"])      #假如edu为新增加的列 user = ('test',23,111)   #元组 user_end = User(*user,"master") ##将数组传到namedtuple里,master为添加的edu的信息 print (user_end.name,user_end.age,user_end.height,user_end.edu)
    #以
    **kwargs的方式增加列或传入数据(字典)
    User
    = namedtuple("user",['name','age','height',"edu"]) user = {                  #字典 "name":'test', "age":23, "height":111 } user_end = User(**user,edu="master") ##将字典数据传到namedtuple里print (user_end.name,user_end.age,user_end.height,user_end.edu)

    #_make方法 ##如果用_make方法,可以把“*”省略,但是要求tuple或者dict里的元素数量必须与nametuple里指定的属性数量相同,例:
    user1 = { "name":'test', "age":23, "height":111, "edu":"aa" } user_end = User._make(user1) print (user_end.name,....)

    #当然,namedtuple也支持猜包
    name,age,*other = user_end print (name,age,other)

    额外补充

    tuple 可作为字典的key,而list不可以,示例:

    name_tuple = ("test",22,185,"baskerball")
    name_list = ["test1",22,188,"baseball"]
    
    dd = {}
    dd[name_tuple] = 'boddy'
    print (dd)
    
    dd[name_list] = 'body'
    print (dd)
    
    打印结果:

    {('test', 22, 185, 'baskerball'): 'boddy'}

    Traceback (most recent call last):
    File "D:/python-script/collections_module/chapter1/collection_module.py", line 29, in <module>
    dd[name_list] = 'body'
    TypeError: unhashable type: 'list'
  • 相关阅读:
    Django
    闭包&装饰器
    Python学习 Day 062
    Python学习 Day 059
    Python学习 Day 058
    Python生成器
    第一类对象(函数),闭包及迭代器
    进阶函数的学习
    对函数的初步了解
    python文件操作
  • 原文地址:https://www.cnblogs.com/FRESHMANS/p/8417123.html
Copyright © 2011-2022 走看看