Python中dict字典

dict全称dictionary,在其他语言中也称为map,使用**键-值(key-value)**存储,具有极快的查找速度

创建dict

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95

内部实现方法

先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。

加入数据

把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:

>>> d['Tony'] = 99
>>> d
{'Michael': 95, 'Bob': 75, 'Tracy': 85, 'Tony': 99}

查询key是否存在

使用in

>>> 'Thomas' in d
False
>>> 'Bob' in d
True

使用get()

如果key不存在,返回None,或者自己指定的value

>>> d.get('Thomas') #返回None时Python交互环境不显示
>>> d.get('Thomas', -1)
-1

删除key

删除一个key,用pop(key)方法,对应的value也会从dict中删除,返回删除的value

>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85, 'Tony': 99}

注意

dict内部存放顺序与key放入顺序无关 dict的key必须是不可变对象 实质:哈希表

和list比较,dict有以下几个特点:

  • 查找和插入的速度极快,不会随着key的增加而变慢;
  • 需要占用大量的内存,内存浪费多。

而list相反:

  • 查找和插入的时间随着元素的增加而增加;
  • 占用空间小,浪费内存很少。

dict相关函数和方法

函数

  • str(dict) 输出字典,以可打印的字符串表示
  • type(variable) 返回输入的变量类型

方法

  • radiansdict.clear() 删除字典内所有元素
  • radiansdict.copy() 返回一个字典的浅复制
  • radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
  • radiansdict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值
  • key in dict 如果键在字典dict里返回true,否则返回false
  • radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组
  • radiansdict.keys() 返回一个迭代器,可以使用 list() 来转换为列表
  • radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
  • radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里
  • radiansdict.values() 返回一个迭代器,可以使用 list() 来转换为列表
  • pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
  • popitem() 随机返回并删除字典中的一对键和值(一般删除末尾对)。
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus