简单谈谈Python中的元祖(Tuple)和字典(Dict)


Posted in Python onApril 21, 2017

前言

本文记录了对于Python的数据类型中元祖(Tuple)和字典(Dict)的一些认识,以及部分内置方法的介绍。下面话不多说,来看看详细的介绍吧。

元祖 Tuple

特点:元祖内的数据不可变

一个元素的定义:T = (1,)

>>> T=(1,)
>>> type(T)
<type 'tuple'>

特殊的元祖:”可变”的元祖

>>> T=(1,2,3,[1,2,3])
>>> T[3][2] = 'vimiix'
>>> T
(1, 2, 3, [1, 2, 'vimiix'])

看上去元祖发生了变化,但真正变化的是[1,2,3]这个列表内的元素发生了变化,但是这个列表在T这个元祖中的内存地址是没有改变的。

结论:实际是元祖的元素包含了可变的元素,但是元祖中元素的内存地址没有变,所以所谓的元祖不可变是指元素指向的内存地址是不变

字典 Dict

特点:

      1、字典是Python中唯一的映射类型

      2、字典的键(KEY)必须是不可变的对象—>因为字典在计算机中是通过Hash算法存储的,Hash的特点是由KEY来计算存储的,如果KEY可变,将会导致数据混乱。

>>> D = {1:3,'vimiix':88}
>>> type(D)
<type 'dict'>
>>> D={[1,2,3]:100}
Traceback (most recent call last):
 File "<pyshell#15>", line 1, in <module>
 D={[1,2,3]:100}
TypeError: unhashable type: 'list' (这里提示list是不能被Hash计算的数据类型,因为list是可变的数据类型)
>>>

由此错误可以看出,字典的键只能使用不可变的对象(元祖是可以的),但是对于字典的值没有此要求

键值对用冒号‘:'分割,每个对之间用逗号‘,'分开,所有这些用花括号‘{}'包含起来

字典中的键值对是没有顺序的,故不可以用索引访问,只可以通过键取得所对应的值

拓展:如果定义的过程中,出现相同的键,最后存储的时候回保留最后的一个键值对)

>>> D= {1:2,1:3}
>>> D
{1: 3}

创建与访问

第一种创建方式:直接通过花括号包含键值对来创建

第二种创建方式:利用内置函数dict()来创建,注意!dict()括号内只能有一个参数,要把所有的键值对括起来

(1)

>>> D =dict((1,2),(3,4),(5,6))
Traceback (most recent call last):
 File "<pyshell#20>", line 1, in <module>
 D =dict((1,2),(3,4),(5,6))
TypeError: dict expected at most 1 arguments, got 3
>>> D =dict(((1,2),(3,4),(5,6)))
>>> D
{1: 2, 3: 4, 5: 6}

(2)还可以指定关键字参数

>>> D=dict(vimiix = 'VIMIIX')
>>> D
{'vimiix': 'VIMIIX'}

这里的小写‘vimiix'不可以加单引号,加了会报错!

(3)dict的内置方法 .fromkeys 有两个参数

>>> D = dict.fromkeys((1,'vimiix'),('common','value'))
>>> D
{1: ('common', 'value'), 'vimiix': ('common', 'value')}
>>>

实际的生产过程中,都是使用字典生成式来创建,根据现有的数据来生成对应的数据,有数据才有意义。

字典生成式栗子:

>>> L1 = [1,2,3]
>>> L2 = ['a','v','vimiix']
>>> D={a:b for a in L1 for b in L2}
>>> D
{1: 'vimiix', 2: 'vimiix', 3: 'vimiix'}

此处只是一个生成式的栗子,但并不是理想答案,待学习如何生成一一对应的键值对

字典的内置方法:

get() :

获取键所对应的值,如果未找到返回None,找到返回对应的值

pop(key) :

弹出key对应的值,默认最后一个

popitem() :

随机返回并删除字典中的一对键和值(项)。为什么是随机删除呢?因为字典是无序的,没有所谓的“最后一项”或是其它顺序。在工作时如果遇到需要逐一删除项的工作,用popitem()方法效率很高。

update() :

更新或者新增一个键值对(有则改之无则加勉)

>>> D.update({'newitem':'update'})
>>> D
{'newitem': 'update', 1: 'vimiix', 2: 'vimiix', 3: 'vimiix'}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python判断windows隐藏文件的方法
Mar 21 Python
Python中使用异常处理来判断运行的操作系统平台方法
Jan 22 Python
自己使用总结Python程序代码片段
Jun 02 Python
Python排序搜索基本算法之冒泡排序实例分析
Dec 09 Python
Django实现全文检索的方法(支持中文)
May 14 Python
基于python OpenCV实现动态人脸检测
May 25 Python
解决pandas中读取中文名称的csv文件报错的问题
Jul 04 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
Oct 28 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
Jan 13 Python
Django自定义列表 models字段显示方式
Apr 03 Python
Python实现弹球小游戏
Aug 01 Python
用Python简陋模拟n阶魔方
Apr 17 Python
Python学习笔记之解析json的方法分析
Apr 21 #Python
Python正则抓取网易新闻的方法示例
Apr 21 #Python
Python中shape计算矩阵的方法示例
Apr 21 #Python
Python使用正则表达式抓取网页图片的方法示例
Apr 21 #Python
用python找出那些被“标记”的照片
Apr 20 #Python
python实现12306火车票查询器
Apr 20 #Python
Python编程修改MP3文件名称的方法
Apr 19 #Python
You might like
php下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
php学习之变量的使用
2011/05/29 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
JavaScript 异步调用框架 (Part 6 - 实例 &amp; 模式)
2009/08/04 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
javascript中for/in循环及使用技巧
2015/09/01 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
2018/04/18 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
python编程羊车门问题代码示例
2017/10/25 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
Python面向对象进阶学习
2019/05/21 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
巴基斯坦购物网站:Goto
2019/03/11 全球购物
会计专业毕业生自我评价
2013/09/25 职场文书
美食节目策划方案
2014/05/31 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
新学期开学寄语2016
2015/12/04 职场文书
安全教育培训心得体会
2016/01/15 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
工作自我评价范文
2019/03/21 职场文书
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏
python实现双链表
2022/05/25 Python