简单谈谈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实例之wxpython中Frame使用方法
Jun 09 Python
在Python下利用OpenCV来旋转图像的教程
Apr 16 Python
Python设计模式编程中解释器模式的简单程序示例分享
Mar 02 Python
Python自然语言处理之词干,词形与最大匹配算法代码详解
Nov 16 Python
python PyTorch预训练示例
Feb 11 Python
python递归全排列实现方法
Aug 18 Python
python如何将两个txt文件内容合并
Oct 18 Python
python实现根据给定坐标点生成多边形mask的例子
Feb 18 Python
Python实现定时监测网站运行状态的示例代码
Sep 30 Python
python3 os进行嵌套操作的实例讲解
Nov 19 Python
如何在C++中调用Python
May 21 Python
python APScheduler执行定时任务介绍
Apr 19 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&amp;java(一)
2006/10/09 PHP
php foreach、while性能比较
2009/10/15 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
ECMAScript 基础知识
2007/06/29 Javascript
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
JS查看对象功能代码
2008/04/25 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
JS HTML5实现拖拽移动列表效果
2020/08/27 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
原生javascript实现分页效果
2017/04/21 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
python Socket之客户端和服务端握手详解
2017/09/18 Python
MAC中PyCharm设置python3解释器
2017/12/15 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
css3媒体查询中device-width和width的区别详解
2020/03/27 HTML / CSS
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
2013的个人自我评价
2013/12/26 职场文书
校园十大歌手策划书
2014/02/01 职场文书
幼儿园元旦家长感言
2014/02/27 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
高中国旗下的演讲稿
2014/08/28 职场文书
八项规定对照检查材料
2014/08/31 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python