background image

Python 基础-字典 (dictionary)

字典

dict,是 Python 唯一的标准 mapping 类型,也是内置在 Python 解释器中的。

mapping object 把一个可哈希的值(hashable value)映射到一个任意的 object 上。

什么是可哈希的

一个

object 是可哈希的(hashable), 是指这个 object 在其生存期内有一个不变的哈希值

hash value),即__hash__()方法返回的值。

所有不可变的(

immutable)内置 object 都是 hashable 的,比如 string,tuple。所有可变的

mutable)内置容器都不是 hashable 的,比如 list,dict(即没有__hash__()方法)。而所有

自定义的类(

use-defined class)对象都是可哈希的(hashable),并且只能和自己相等,其

hashvalue 为其 id(object)的值,这里的 id()为内置函数,CPython 实现的时候取的对象在内
存中的地址。

字典

Dictionary 的 key 必须是可哈希的,所以 tuple,string 可以做 key,而 list 不能做 key,

关于这个我以后会专门解释,或参见文末参考第

3 篇。

dict 本身是一个类

class dict(mapping)
1,字典的创建
>>> d= 

dict

({

1

:'a',

2

:'b',

3

:'c'})     

#通过 dict 类来构建

>>> d
{

1

:'a',

2

:'b',

3

:'c'}

>>> d2= {

1

:'a',

2

:'b',

3

:'c'}           #直接构建,注意语法,大括号,冒号,逗号

>>> d2
{

1

:'a',

2

:'b',

3

:'c'}

2,dictionary 支持的操作
作为

Python 唯一的标准 mapping type,dictionary 支持了增,删,查,整体更新等操作。

一部分操作是由

dict 的成员函数实现的,一部分操作是由 Python 的内置函数(built-

in)function 实现的,也有使用 Python 的 del 语句

 2.1 引用元素

直接用

d[key],就可以得到 key 所对应得那个 object,但是如果 key 不存在呢,如果使用的

就是标准的

dict,那么会抛出 KeyError 异常。但是如果我们是自己从 dict 派生了一个自己的