博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python学习笔记】字典dict
阅读量:6700 次
发布时间:2019-06-25

本文共 1424 字,大约阅读时间需要 4 分钟。

hot3.png

 

Python内置了字典:dict,全称dictionary,无序的,使用键值(key-value)存储,具有极快的查找速度。
原理:要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。
 第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字,无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。

dict的操作包括初始化、重新赋值、添加、取值、删除等

#!/usr/bin/env python#-*- coding:utf-8 -*-# 例:根据学号查找对应的成绩.dict的速度几乎是list的两倍# 初始化d1 = {101:95,102:90,104:80}print u'101对应的value是:', d1[101]# 将数据存入dict除了初始化外还可以通过赋值的方式d1[108] = 92print u'd1中存储的key-value是:', d1		# 一个key只能对应一个value,所以key对应的是最后一个有效的valued1[109] = 78d1[109] = 87print u'd1中存储的key-value是:', d1# 取value时,如果key存在,返回对应的value,如果key不存在,dict就会报错。# 为避免发生key不存在的错误,可以1:通过in判断key是否存在,返回True/False,2:利用get方法的返回值判断print u'102对应的value是:', d1[102]# print u'110对应的value是:', d1[110]print u'key=110是否与d1:', 110 in d1         # 没找到则返回Falseprint d1.get(110)       # 没找到则返回Noneprint d1.get(110,-1)    # 没找到则返回-1# 删除key-value,用pop(key)方法,对应的value也会被删除# dict内部存放的顺序和key放入的顺序是没有关系的print u'd1中存储的key-value是:', d1print u'删除d1中key=108的key-value对:108-', d1.pop(108)print u'd1中存储的key-value是:', d1

运行效果:174702_lmHZ_2913386.png

★★★值得注意的是:

dict的key必须是不可变对象。因为dict根据key来计算value的存储位置,如果相同的key得出的结果不同,那dict内部就完全混乱了。

这种key计算位置的算法称为哈希算法(Hash)。要保证hash的正确性,作为key的对象就不能变。
在Python中,字符串、整数等都是不可变的,因此,可作为key。而list是可变的,就不能作为key

★★★总结

 和list比较,dict有以下几个特点:
1. 查找和插入的速度极快,不会随着key的增加而增加;
2. 需要占用大量的内存,内存浪费多。
而list相反:
1. 查找和插入的时间随着元素的增加而增加;
2. 占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。

转载于:https://my.oschina.net/MasterLi161307040026/blog/745902

你可能感兴趣的文章
国家自科委管文科学部认定的国内30种重要期刊
查看>>
表单验证
查看>>
原生JS数组去重的几种方法
查看>>
POJ——字符串插入
查看>>
1088. [SCOI2005]扫雷Mine【网格DP】
查看>>
BZOJ1718:[USACO]Redundant Paths 分离的路径(双连通分量)
查看>>
Java Decompiler(Java反编译工具)
查看>>
win下php的memcached的安装与使用
查看>>
git 常用命令笔记
查看>>
php使用supervisor管理进程脚本
查看>>
5.19 - Stacks and Queues
查看>>
读取config文件中的键值
查看>>
Starling框架帮助手册中文版(PDF下载)
查看>>
(五)Maven中的聚合和继承
查看>>
(三)SpringBoot之配置文件详解:Properties和YAML
查看>>
实验一报告
查看>>
JsRender 前端渲染模板常用API学习
查看>>
MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
查看>>
【分布式计算】MapReduce的替代者-Parameter Server
查看>>
CodeVS 1044 拦截导弹(DP)
查看>>