简单谈谈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和perl实现批量对目录下电子书文件重命名的代码分享
Nov 21 Python
简单的编程0基础下Python入门指引
Apr 01 Python
Atom的python插件和常用插件说明
Jul 08 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
Oct 22 Python
详解python持久化文件读写
Apr 06 Python
python GUI实现小球满屏乱跑效果
May 09 Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 Python
Python操作Mongodb数据库的方法小结
Sep 10 Python
Anaconda的安装及其环境变量的配置详解
Apr 22 Python
如何将PySpark导入Python的放实现(2种)
Apr 26 Python
Python HTMLTestRunner如何下载生成报告
Sep 04 Python
在pyCharm中下载第三方库的方法
Apr 18 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中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
用函数式编程技术编写优美的 JavaScript
2006/11/25 Javascript
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
web页面数据展示新想法(json)
2010/06/08 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
jQuery页面刷新(局部、全部)问题分析
2016/01/09 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
node安装--linux下的快速安装教程
2017/03/21 Javascript
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
Node.js中sequelize时区的配置方法
2017/12/10 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
JS html事件冒泡和事件捕获操作示例
2019/05/01 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
Python3多线程基础知识点
2019/02/19 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
python怎么删除缓存文件
2020/07/19 Python
python解包用法详解
2021/02/17 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
学生不讲诚信检讨书
2014/09/29 职场文书
中国世界遗产导游词
2015/02/13 职场文书
文化大革命观后感
2015/06/17 职场文书
公司新员工欢迎词
2015/09/30 职场文书
大学生先进个人主要事迹材料
2015/11/04 职场文书
SpringBoot Http远程调用的方法
2022/08/14 Java/Android