简单谈谈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迭代器和生成器介绍
Mar 06 Python
python正则表达式match和search用法实例
Mar 26 Python
python中as用法实例分析
Apr 30 Python
django开发之settings.py中变量的全局引用详解
Mar 29 Python
python tkinter界面居中显示的方法
Oct 11 Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 Python
python飞机大战pygame游戏之敌机出场实现方法详解
Dec 17 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 Python
Python批量删除mysql中千万级大量数据的脚本分享
Dec 03 Python
Python利用zhdate模块实现农历日期处理
Mar 31 Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Apr 04 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
一个简单的自动发送邮件系统(二)
2006/10/09 PHP
杏林同学录(七)
2006/10/09 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
javascript RadioButtonList获取选中值
2009/04/09 Javascript
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
使用jQuery同时控制四张图片的伸缩实现代码
2013/04/19 Javascript
基于jquery实现的省市区级联无ajax
2013/09/24 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
js运动事件函数详解
2016/10/21 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
[05:26]2014DOTA2西雅图国际邀请赛 iG战队巡礼
2014/07/07 DOTA
python中的__slots__使用示例
2015/02/26 Python
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
python实现rsa加密实例详解
2017/07/19 Python
使用python实现ANN
2017/12/20 Python
Python 获取div标签中的文字实例
2018/12/20 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
如何利用python web框架做文件流下载的实现示例
2020/06/02 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
Python 实现PS滤镜中的径向模糊特效
2020/12/03 Python
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
好的自荐信包括什么内容
2013/11/07 职场文书
销售部主管岗位职责
2013/12/18 职场文书
旷课检讨书3000字
2014/02/04 职场文书
投资意向书
2014/07/30 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
安全生产奖惩制度
2015/08/06 职场文书
python四种出行路线规划的实现
2021/06/23 Python
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android