简单谈谈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卸载模块的方法汇总
Jun 07 Python
python 实现上传图片并预览的3种方法(推荐)
Jul 14 Python
浅谈python日志的配置文件路径问题
Apr 28 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
对Python中TKinter模块中的Label组件实例详解
Jun 14 Python
python matplotlib饼状图参数及用法解析
Nov 04 Python
使用TensorFlow搭建一个全连接神经网络教程
Feb 06 Python
python离线安装外部依赖包的实现
Feb 13 Python
Python文字截图识别OCR工具实例解析
Mar 05 Python
Python多线程多进程实例对比解析
Mar 12 Python
python调用API接口实现登陆短信验证
May 10 Python
selenium.webdriver中add_argument方法常用参数表
Apr 08 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的FTP学习(一)[转自奥索]
2006/10/09 PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
2009/08/07 PHP
PHP is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
Memcached常用命令以及使用说明详解
2013/06/27 PHP
php 静态属性和静态方法区别详解
2017/04/09 PHP
使用JavaScript switch case 另类写法
2010/03/14 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
JavaScript之cookie技术详解
2016/11/18 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
node.js实现登录注册页面
2017/04/08 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
Python写的英文字符大小写转换代码示例
2015/03/06 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
python实现一个简单的并查集的示例代码
2018/03/19 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
中职生自我鉴定范文
2013/10/03 职场文书
应届生服务员求职信
2013/10/31 职场文书
护士演讲稿范文
2014/01/05 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
企业百日安全活动总结
2015/05/07 职场文书
SQL Server 中的事务介绍
2022/05/20 SQL Server