collections模块
collections模块:提供一些python八大类型以外的数据类型
python默认八大数据类型:
- 整型
- 浮点型
- 字符串
- 字典
- 列表
- 元组
- 集合
- 布尔类型
1、具名元组
具名元组只是一个名字
应用场景:
① 坐标
<span>#</span><span> 应用:<a href="https://www.gaodaima.com/tag/%e5%9d%90%e6%a0%87" title="查看更多关于坐标的文章" target="_blank">坐标</a></span> <span>from</span> collections <span>import</span><span> namedtuple </span><span>#</span><span> 将"坐标"变成"对象"的名字</span><span> #</span><span> 传入可迭代对象必须是有序的</span> point = namedtuple(<span>"</span><span>坐标</span><span>"</span>, [<span>"</span><span>x</span><span>"</span>, <span>"</span><span>y</span><span>"</span> ,<span>"</span><span>z</span><span>"</span>]) <span>#</span><span> 第二个参数既可以传可迭代对象</span><span> #</span><span> point = namedtuple("坐标", "x y z") # 也可以传字符串,但是字符串之间以空格隔开</span> p = point(1, 2, 5) <span>#</span><span> 注意元素的个数必须跟namedtuple中传入的可迭代对象里面的值数量一致</span> <span>#</span><span> 会将1 --> x , 2 --> y , 5 --> z</span> <span>print</span><span>(p) </span><span>print</span><span>(p.x) </span><span>print</span><span>(p.y) </span><span>print</span>(p.z)
www#gaodaima.com来源gaodai#ma#com搞*代#码网搞代码
执行结果:
坐标(x=1, y=2, z=5<span>) </span>1 2 5
② 扑克牌
<span>#</span><span> 扑克牌</span> <span>from</span> collections <span>import</span><span> namedtuple </span><span>#</span><span> 获取扑克牌对象</span> card = namedtuple(<span>"</span><span>扑克牌</span><span>"</span>, <span>"</span><span>color number</span><span>"</span><span>) </span><span>#</span><span> 产生一张张扑克牌</span> red_A = card(<span>"</span><span>红桃</span><span>"</span>, <span>"</span><span>A</span><span>"</span><span>) </span><span>print</span><span>(red_A) black_K </span>= card(<span>"</span><span>黑桃</span><span>"</span>, <span>"</span><span>K</span><span>"</span><span>) </span><span>print</span>(black_K)
执行结果:
扑克牌(color=<span>"</span><span>红桃</span><span>"</span>, number=<span>"</span><span>A</span><span>"</span><span>) 扑克牌(color</span>=<span>"</span><span>黑桃</span><span>"</span>, number=<span>"</span><span>K</span><span>"</span>)
③ 个人信息
<span>#</span><span> 个人的信息</span> <span>from</span> collections <span>import</span><span> namedtuple p </span>= namedtuple(<span>"</span><span>china</span><span>"</span>, <span>"</span><span>city name age</span><span>"</span><span>) ty </span>= p(<span>"</span><span>TB</span><span>"</span>, <span>"</span><span>ty</span><span>"</span>, <span>"</span><span>31</span><span>"</span><span>) </span><span>print</span>(ty)
执行结果:
china(city=<span>"</span><span>TB</span><span>"</span>, name=<span>"</span><span>ty</span><span>"</span>, age=<span>"</span><span>31</span><span>"</span>)
2、有序字典
python中字典默认是无序的
collections中提供了有序的字典: from collections import OrderedDict
<span>#</span><span> python默认无序字典</span> dict1 = dict({<span>"</span><span>x</span><span>"</span>: 1, <span>"</span><span>y</span><span>"</span>: 2, <span>"</span><span>z</span><span>"</span>: 3<span>}) </span><span>print</span>(dict1, <span>"</span><span> ------> 无序字典</span><span>"</span><span>) </span><span>print</span>(dict1.get(<span>"</span><span>x</span><span>"</span><span>)) </span><span>#</span><span> 使用collections模块打印有序字典</span> <span>from</span> collections <span>import</span><span> OrderedDict order_dict </span>= OrderedDict({<span>"</span><span>x</span><span>"</span>: 1, <span>"</span><span>y</span><span>"</span>: 2, <span>"</span><span>z</span><span>"</span>: 3<span>}) </span><span>print</span>(order_dict, <span>"</span><span> ------> 有序字典</span><span>"</span><span>) </span><span>print</span>(order_dict.get(<span>"</span><span>x</span><span>"</span>)) <span>#</span><span> 与字典取值一样,使用.get()可以取值</span> <span>print</span>(order_dict[<span>"</span><span>x</span><span>"</span>]) <span>#</span><span> 与字典取值一样,使用key也可以取值</span> <span>print</span>(order_dict.get(<span>"</span><span>y</span><span>"</span><span>)) </span><span>print</span>(order_dict[<span>"</span><span>y</span><span>"</span><span>]) </span><span>print</span>(order_dict.get(<span>"</span><span>z</span><span>"</span><span>)) </span><span>print</span>(order_dict[<span>"</span><span>z</span><span>"</span>])
执行结果:
{<span>"</span><span>x</span><span>"</span>: 1, <span>"</span><span>y</span><span>"</span>: 2, <span>"</span><span>z</span><span>"</span>: 3} ------><span> 无序字典 </span>1<span> OrderedDict([(</span><span>"</span><span>x</span><span>"</span>, 1), (<span>"</span><span>y</span><span>"</span>, 2), (<span>"</span><span>z</span><span>"</span>, 3)]) ------><span> 有序字典 </span>1 1 2 2 3 3