简单谈谈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中何种情况下需要使用断言
Apr 01 Python
python通过ftplib登录到ftp服务器的方法
May 08 Python
Python下rrdtool模块的基本使用方法
Nov 13 Python
Python中的字符串类型基本知识学习教程
Feb 04 Python
3分钟学会一个Python小技巧
Nov 23 Python
Python http接口自动化测试框架实现方法示例
Dec 06 Python
打包python 加icon 去掉cmd黑窗口方法
Jun 24 Python
Python解析多帧dicom数据详解
Jan 13 Python
Python坐标轴操作及设置代码实例
Jun 04 Python
Python爬虫之App爬虫视频下载的实现
Dec 08 Python
Python中super().__init__()测试以及理解
Dec 06 Python
python中对列表的删除和添加方法详解
Feb 24 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
打造计数器DIY三步曲(下)
2006/10/09 PHP
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
PHP中file_get_contents高?用法实例
2014/09/24 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
JavaScript 原型与继承说明
2010/06/09 Javascript
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
2014/06/14 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
[01:13:01]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第三场
2018/04/05 DOTA
python连接oracle数据库实例
2014/10/17 Python
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
Python3.x对JSON的一些操作示例
2017/09/01 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
2018/02/18 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
python中的json总结
2018/10/11 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
django教程如何自学
2020/07/31 Python
彻底搞懂python 迭代器和生成器
2020/09/07 Python
统计员岗位职责
2013/11/14 职场文书
实用的简历自我评价
2014/03/06 职场文书
文明班集体申报材料
2014/05/23 职场文书
校园广播稿100字
2014/10/06 职场文书
街道务虚会发言材料
2014/10/20 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
萤火虫之墓观后感
2015/06/05 职场文书
法制教育讲座心得体会
2016/01/14 职场文书
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL