无名 发表于 2022-5-8 17:02:42

【LSP】数据结构—字典


http://cdn.u1.huluxia.com/g4/M01/65/85/rBAAdl91TDyAFjwtAACt4WdlvYs409.jpg
1、字典概述

dict(字典)可能是Python内建数据结构中最重要的。它更为常用的名字是哈希表或者是关联数组。字典是拥有灵活尺寸的键值对集合,其中键和值都是Python对象。用括号

{ }是创建字典的一种方式,在字典中用逗号将键值对分隔:



你可以访问、插入或设置字典中的元素,就像访问列表和元素中的元素一样:



你可以用检查列表或元组中是否含有一个元素的相同语法来检查字典是否含有一个键:

你可以使用del关键字或pop方法删除值,pop方法会在删除的同时返回被删的值,并删除键:
http://cdn.u1.huluxia.com/g4/M01/65/85/rBAAdl91TD2ALSrRAAAY3DYdymU121.png
http://cdn.u1.huluxia.com/g4/M01/65/85/rBAAdl91TD2AVHX9AAAuATksU9U030.png







Keys方法和values方法分别会分别为你提供字典键、值的迭代器。然而键值对并没有特定的顺序,这些函数输出的键、值都是按照相同的顺序:

http://cdn.u1.huluxia.com/g4/M01/65/85/rBAAdl91TD6ANitXAAAX_9bVo0Y877.png


你可以使用update方法将两个字典合并:

http://cdn.u1.huluxia.com/g4/M01/65/85/rBAAdl91TD6AT1rwAAARd0j_Fuc862.png

update方法改变了字典中元素位置,因此对于任何原字典中已经存在的键,如果传给update方法的数据也含有相同的键,则它将会被覆盖。

1.1 默认值

通常情况下,会有这样的代码逻辑:

if key in some_dict:

         value = some_dict

else:

         value = default_value

不过字典的get方法和pop方法可以返回一个默认值,因此上述if-else 代码块可以被简写为:

         value = some_dict.get(key, default_value)

带有默认值的get方法会在key 参数不是字典的键时返回None,而pop会抛出异常。一个常见的场景时字典中的值集合通过设置,成为另一种集合,比如列表。

举个例子,你可以想象一下将字词组成的列表根据首字母分类为包含列表的字典:
http://cdn.u1.huluxia.com/g4/M01/65/85/rBAAdl91TD-ANqR3AAAqKItF34E897.png



字典的setdefault方法就是为了这个目的二产生的,上述的for循环语句可以被写为:http://cdn.u1.huluxia.com/g4/M01/65/85/rBAAdl91TD-ADixtAAAhhGDz5ik235.png




总结:python中字典setdefault()函数和get()方法类似,如果键不存在与字典中,将会添加键并将值设置为默认值

setdefault()语法

dict.setdefault(key,default = None)

key--查找的键值

default--键不存在时,设置的默认键值。

1.2 有效的字典键类型

尽管字典的值可以是任何Python对象,但键必须是不可变的对象,比如标量类型(整数、浮点型、字符串)或元组(且元组内对象也必须是不可变对象)。这里

要用到一个术语叫做哈希化,通过hash函数可以检查一个对象是否可以哈希化http://cdn.u1.huluxia.com/g4/M01/65/85/rBAAdl91TECAFeRiAABSz3uiwjk856.png




为了将列表作为键,一种方式就是将其转化为元组,而元组只要它内部元素都可以哈希化,则它自己也可哈希化。http://cdn.u1.huluxia.com/g4/M01/65/85/rBAAdl91TECACHVHAAAMe8ZpuOk462.png
页: [1]
查看完整版本: 【LSP】数据结构—字典