Python字典

家住魔仙堡 提交于 2021-01-15 05:01:30

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

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

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

(1)一个key只能对应一个value。

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

  d['Adam'] = 67

(3)避免key不存在的错误,有两种办法

方法一:通过in判断key是否存在

  'Thomas' in d

方法二:通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value

  d.get('Thomas')
  d.get('Thomas', -1)

注意:返回None的时候Python的交互环境不显示结果。

(4)删除

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

  d.pop('Bob')

(5)请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。

(6)list与dict的比较

Ⅰ、dict:

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

Ⅱ、list:

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

所以,dict是用空间来换取时间的一种方法。

(7)dict的key必须是不可变对象

这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)

在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key。

https://www.imdb.com/list/ls083013365/ https://www.imdb.com/list/ls083013326/ https://www.imdb.com/list/ls083013345/ https://www.imdb.com/list/ls083013394/ https://www.imdb.com/list/ls083013658/ https://www.imdb.com/list/ls083013613/ https://www.imdb.com/list/ls083013667/ https://www.imdb.com/list/ls083013664/ https://www.imdb.com/list/ls083013625/ https://www.imdb.com/list/ls083013626/ https://www.imdb.com/list/ls083013645/ https://www.imdb.com/list/ls083013648/ https://www.imdb.com/list/ls083013687/ https://www.imdb.com/list/ls083013683/ https://www.imdb.com/list/ls083013209/ ttps://www.imdb.com/list/ls083013255/ https://www.imdb.com/list/ls083013254/ https://www.imdb.com/list/ls083013275/ https://www.imdb.com/list/ls083013273/ https://www.imdb.com/list/ls083013279/ https://www.imdb.com/list/ls083013213/ https://www.imdb.com/list/ls083013218/ https://www.imdb.com/list/ls083013239/ https://www.imdb.com/list/ls083013267/ https://www.imdb.com/list/ls083013269/ https://www.imdb.com/list/ls083013221/ https://www.imdb.com/list/ls083013222/ https://www.imdb.com/list/ls083013242/ https://www.imdb.com/list/ls083013293/ https://www.imdb.com/list/ls083013280/ https://www.imdb.com/list/ls083013289/ https://www.imdb.com/list/ls083013401/ https://www.imdb.com/list/ls083013408/ https://www.imdb.com/list/ls083013454/ https://www.imdb.com/list/ls083013477/ https://www.imdb.com/list/ls083013479/ https://www.imdb.com/list/ls083013412/

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!