简单谈谈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中的eval()、exec()及其相关函数
Dec 20 Python
Python进阶之递归函数的用法及其示例
Jan 31 Python
Python中装饰器学习总结
Feb 10 Python
pandas 将list切分后存入DataFrame中的实例
Jul 03 Python
Numpy数组array和矩阵matrix转换方法
Aug 05 Python
Python matplotlib生成图片背景透明的示例代码
Aug 30 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
Apr 26 Python
Python中使用filter过滤列表的一个小技巧分享
May 02 Python
python程序需要编译吗
Jun 19 Python
Python中bisect的用法及示例详解
Jul 20 Python
Python 串口通信的实现
Sep 29 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 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对字符串的递增运算分析
2010/08/08 PHP
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
2016/04/20 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
jquery实现盒子下拉效果示例代码
2013/09/12 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
2014/05/14 Javascript
初识Node.js
2015/03/20 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
使用eslint和githooks统一前端风格的技巧
2020/07/29 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
关于Python中的向量相加和numpy中的向量相加效率对比
2019/08/26 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
财务人员求职自荐书范文
2014/02/10 职场文书
2014年师德师风学习材料
2014/05/16 职场文书
质量主管工作职责
2014/09/26 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
心理健康教育主题班会
2015/08/13 职场文书
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang
Linux中各个目录的作用与内容
2022/06/28 Servers