简单谈谈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 相关文章推荐
Django在Win7下的安装及创建项目hello word简明教程
Jul 14 Python
python3实现暴力穷举博客园密码
Jun 19 Python
Python之str操作方法(详解)
Jun 19 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
用pandas中的DataFrame时选取行或列的方法
Jul 11 Python
如何在Python中实现goto语句的方法
May 18 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
Jan 03 Python
python实现实时视频流播放代码实例
Jan 11 Python
python烟花效果的代码实例
Feb 25 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
Jul 13 Python
python 从list中随机取值的方法
Nov 16 Python
Python机器学习应用之工业蒸汽数据分析篇详解
Jan 18 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
基于mysql的论坛(4)
2006/10/09 PHP
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
2020/08/14 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
17个Python小技巧分享
2015/01/23 Python
详解Python中的strftime()方法的使用
2015/05/22 Python
Python time库基本使用方法分析
2019/12/13 Python
python实现一个简单RPC框架的示例
2020/10/28 Python
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
HTML5触摸事件(touchstart、touchmove和touchend)的实现
2020/05/08 HTML / CSS
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
英国精品买手店:Browns Fashion
2016/09/29 全球购物
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
Monki官网:斯堪的纳维亚的独立时尚品牌
2020/11/09 全球购物
应届生体育教师自荐信
2013/10/03 职场文书
大学生求职信范文应怎么写
2014/01/01 职场文书
擅自离岗检讨书
2014/02/11 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
股东协议书范本2016
2016/03/21 职场文书
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫