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'
collections 数据结构模块namedtuple的更多相关文章
- collections集合模块 [namedtuple,deque,*]
collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtuple namedtuple是一个函数, 它用来创建一个自定义的tuple对象,并且规定了 tuple元 ...
- collections模块-namedtuple
namedtuple -> 命名元组 这里的命名指的是对元组中元素的命名. 通过一个例子来看 import collections Person = collections.namedtuple ...
- python基础 ---time,datetime,collections)--时间模块&collections 模块
python中的time和datetime模块是时间方面的模块 time模块中时间表现的格式主要有三种: 1.timestamp:时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算 ...
- 25、typing导入Python的数据类型模块、collections集合模块
一.typing模块 1.typing模块的作用 类型检查,防止运行时出现参数和返回值类型不符合. 作为开发文档附加说明,方便使用者调用时传入和返回参数类型. 该模块加入后并不会影响程序的运行,不会报 ...
- python基础语法12 内置模块 json,pickle,collections,openpyxl模块
json模块 json模块: 是一个序列化模块. json: 是一个 “第三方” 的特殊数据格式. 可以将python数据类型 ----> json数据格式 ----> 字符串 ----& ...
- The Collections Module内建collections集合模块
https://www.bilibili.com/video/av17396749/?p=12 Python函数式编程中的迭代器,生成器详解 课程内容 1.iterators are objects ...
- collections库的namedtuple+pytest的使用
from collections import namedtupleTask=namedtuple('Task',['summary','owner','done','id'])Task.__new_ ...
- fis中的数据结构模块Config
/* * config * caoke */ 'use strict'; Object.extend=function(props){ //继承父类 var prototype=Object.crea ...
- Python高级数据结构-Collections模块
在Python数据类型方法精心整理,不必死记硬背,看看源码一切都有了之中,认识了python基本的数据类型和数据结构,现在认识一个高级的:Collections 这个模块对上面的数据结构做了封装,增加 ...
随机推荐
- JVM深入理解<二>
以下内容来自: http://www.jianshu.com/p/ac7760655d9d JVM相关知识详解 一.Java虚拟机指令集 Java虚拟机指令由一个字节长度的.代表某种特定含义的操作码( ...
- BZOJ2561最小生成树——最小割
题目描述 给定一个边带正权的连通无向图G=(V,E),其中N=|V|,M=|E|,N个点从1到N依次编号,给定三个正整数u,v,和L (u≠v),假设现在加入一条边权为L的边(u,v),那么需要删掉最 ...
- NIKKEI Programming Contest 2019 翻车记
A:签到. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> ...
- P1427 小鱼念数字
P1427 题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了) ...
- 【洛谷U20626】gemo 容斥 FWT 高斯消元
题目大意 给你一个无向图,有\(m\)个询问,每次给你一个点\(x\)和一个点集\(S\),问你从\(x\)开始走,每次从一个点随机的走到与这个点相邻的点,问你访问\(S\)中每个点至少一次的期望步数 ...
- HDOJ5551 Huatuo's Medicine
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5551 题目大意:... 题目思路:乱搞?模拟? #include <stdio.h> vo ...
- linux命令:查看系统版本
debian系统 (1) lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debia ...
- Hdoj 2191.悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 题解
Problem Description 急!灾区的食物依然短缺! 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品 ...
- 「ZJOI2016」旅行者 解题报告
「ZJOI2016」旅行者 对网格图进行分治. 每次从中间选一列,然后枚举每个这一列的格子作为起点跑最短路,进入子矩形时把询问划分一下,有点类似整体二分 至于复杂度么,我不会阿 Code: #incl ...
- APIO2018解题报告
今年的APIO好邪啊. T1铁人两项 题目大意 给一个无向图,问有多少三元组(三个元素两两不同)使得它们构成一条简单路径 . 题解 无向图这种东西不好直接处理,考虑点双缩点建圆方树. 然后就出现了一个 ...