简单谈谈Python中的元祖(Tuple)和字典(Dict)

作者:Vimiix 时间:2022-12-14 03:26:26 

前言

本文记录了对于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'}

来源:http://www.vimiix.com/2017/03/31/Python-Introduction-of-tuple-and-dict.html

标签:Python,元祖Tuple,字典Dict
0
投稿

猜你喜欢

  • 像聪明女孩穿衣服那样设计网页文字

    2007-11-06 16:45:00
  • 关于MySQL 大批量插入时如何过滤掉重复数据

    2024-01-17 10:42:51
  • echarts自定义饼图数据刷新和颜色渲染问题浅析

    2024-04-29 13:21:15
  • Python常用模块介绍

    2021-01-03 10:11:53
  • Vuex中actions的使用教程详解

    2024-04-30 08:45:29
  • SQLServer WITH 的用法

    2009-07-09 18:54:00
  • Python随手笔记之标准类型内建函数

    2022-10-23 11:00:45
  • JavaScript实现切换多张图片

    2024-04-17 09:54:18
  • Linux环境下安装mysql5.7.36数据库教程

    2024-01-19 15:42:02
  • Python实现钉钉发送报警消息的方法

    2022-11-18 06:06:44
  • python点云地面点滤波(Progressive Morphological Filter)算法介绍(PCL库)

    2021-12-23 00:38:29
  • Python画图常用命令大全(详解)

    2023-04-17 15:20:16
  • python字典排序浅析介绍

    2022-01-30 17:45:00
  • mysql中order by与group by的区别

    2024-01-21 19:50:24
  • Python 读取xml数据,cv2裁剪图片实例

    2021-07-18 00:08:08
  • ASP也使用ORM,给ASP上所有的SQL注入画上句号

    2011-04-03 11:02:00
  • 教你轻松掌握MaxDB和MySQL之间的协同性

    2009-02-23 17:28:00
  • sqlserver、Mysql、Oracle三种数据库的优缺点总结

    2024-01-22 10:33:56
  • 利用PyQt5生成过年春联

    2023-05-23 21:14:22
  • 如何利用pycharm进行代码更新比较

    2022-06-21 17:13:09
  • asp之家 网络编程 m.aspxhome.com