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

举个例子,假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list:names = ['Michael', 'Bob', 'Tracy']

scores = [95, 75, 85]

给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长。

如果用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用Python写一个dict如下:>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}

>>> d['Michael']

95

为什么dict查找速度这么快?因为dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。

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

dict就是第二种实现方式,给定一个名字,比如'Michael',dict在内部就可以直接计算出Michael对应的存放成绩的“页码”,也就是95这个数字存放的内存地址,直接取出来,所以速度非常快。

你可以猜到,这种key-value存储方式,在放进去的时候,必须根据key算出value的存放位置,这样,取的时候才能根据key直接拿到value。

把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:>>> d['Adam'] = 67

>>> d['Adam']

67

由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:>>> d['Jack'] = 90

>>> d['Jack']

90

>>> d['Jack'] = 88

>>> d['Jack']

88

如果key不存在,dict就会报错:>>> d['Thomas']

Traceback (most recent call last):

File "", line 1, in

KeyError: 'Thomas'

要避免key不存在的错误,有两种办法,一是通过in判断key是否存在:>>> 'Thomas' in d

False

python中的dict函数什么意思_3分钟搞懂Python中dict函数的含义是什么相关推荐

  1. python数据分析建模-十分钟搞懂“Python数据分析”

    原标题:十分钟搞懂"Python数据分析" 引言:本文重点是用十分钟的时间帮读者建立Python数据分析的逻辑框架.其次,讲解"如何通过Python 函数或代码和统计学知 ...

  2. java和python的web自动化有什么区别-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

  3. python中模块是什么意思_Python中的模块是什么?3分钟搞懂Python中的模块问题

    Python 中的模块是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句,模块让你能够有逻辑地组织你的 Python 代码段.把相关的代码分配到一个模块里能 ...

  4. pearsonr() python_十分钟搞懂“Python数据分析”

    引言:本文重点是用十分钟的时间帮读者建立Python数据分析的逻辑框架.其次,讲解"如何通过Python 函数或代码和统计学知识来实现数据分析". 本次介绍的建模框架图分为六大版块 ...

  5. 三分钟搞懂SQL的Case函数

    文章标题 前言 一: 使用语法 作用一: 结合分组统计数据 作用二: 分条件更新字段值 作用三: 检查表中字段值是否一致 作用四: 行转列(重点-面试常见) 五:普通case函数和搜索case函数的区 ...

  6. python中row是什么意思_一文搞懂Python中的yield

    关注公众号「Python七号」,及时 get Python 技能. yield 可以实现生成器,可以实现协程. 什么是生成器,什么是协程,如果还不了解,可以继续往下看,概念可以不懂,只要理解它的作用和 ...

  7. python中cgi到底是什么_十分钟搞懂什么是CGI(转)

    原文:CGI Made Really Easy,在翻译的过程中,我增加了一些我在学习过程中找到的更合适的资料,和自己的一些理解.不能算是严格的翻译文章,应该算是我的看这篇文章的过程的随笔吧. CGI真 ...

  8. python中w和wb区别_一篇搞懂python文件讀寫操作(r/r+/rb/w/w+/wb/a/a+/ab)

    關於文件操作的幾種常用方式,網上已有很多解說,內容很豐富,但也因此有些雜亂復雜.今天,我就以我個人的學習經驗寫一篇詳細又易懂的總結文章,希望大家看完之后會有所收獲. 一.各模式逐個分解 'r':只讀. ...

  9. python中w和wb区别_一篇搞懂python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)

    关于文件操作的几种常用方式,网上已有很多解说,内容很丰富,但也因此有些杂乱复杂.今天,我就以我个人的学习经验写一篇详细又易懂的总结文章,希望大家看完之后会有所收获. 一.各模式逐个分解 'r':只读. ...

最新文章

  1. java 手编线程池_死磕 java线程系列之自己动手写一个线程池
  2. Grails里DOMAIN类的一对一,一对多,多对多关系总结及集成测试
  3. 修改 Oracle 数据库 sequence(序列) 的 increment (步长)
  4. 引擎讲解2--主要是MyISAM和InnoDB的区别
  5. OAM 创始团队:揭秘 OAM Kubernetes 实现核心原理
  6. GDCM:打印dicom文件的LookupTable的测试程序
  7. Linux 环境变量设置及查看
  8. SQL2005中row_number()等函数的用法
  9. sql左右连接的区别
  10. 【广告技术】使用图神经网络进行信息聚合与推理,解决多证据事实验证问题
  11. linux unip命令
  12. git代理设置与取消
  13. CubieBoard6(S500,armhf)安装ROS过程
  14. python 简单易懂的验证码识别
  15. 六年级小学生做的个人网站
  16. ijKPlayer - 视频直播
  17. HC32F460开发之硬件IIC驱动AT24C64
  18. 淘宝店小蜜配置手册——自定义知识库配置
  19. LSTM神经网络实现对股市收盘价格的预测实战(python实现 附源码 超详细)
  20. 2022-2028全球半永久汽车紧固件行业调研及趋势分析报告

热门文章

  1. LOOP AT GROUP语法熟悉
  2. 剑指offer--3
  3. Spring的入门学习笔记 (注解)
  4. python学习笔记六 初识面向对象上(基础篇)
  5. iOS的消息机制和消息转发
  6. SkinSharp用法
  7. 三 jQuery 选择器
  8. 推荐一款eclipse快速打开项目文件夹所在路径插件
  9. C/C++ SQLite 之基础篇
  10. printf输出16进制数