字典

特点:字典是python中唯一的映射类型,采用键值对(key-value) 的形式存数据。

存储大量的数据,是关系型数据,查询数据快。

字典初始说明:

遍历字典从列表开始,列表是从头便利到尾的。字典使用二分查找。先劈一半,不匹配,在劈一半,再找。最后找到对应的值。

如果字典的数据是1到~ 00

例如:

要找75

第一次,先找50。 50 比 75小,比较
第二次,找50~100之间的。劈一半,找75

对于字符串查找

每一个字符串,都有一个hash值,对应指定的字符

每个字符,hash表,都设定好了,是唯一的。

示例:

  1. print(hash('a'))

  输出:

如果重新执行后的效果为以下:

数据类型的分类:

  1. 可变数据类型(不可哈希):list,dict,set

  2. 不可变数据类型(可哈希):int, bool,str,tuple

  容器类(承载各种数据类型):list, tuple ,dic

示例:

  1. a = 'superman'
  2. a.capitalize()

对于原数据,没有改变。但开辟了新的内存空间。

  字典的键:必须是不可变数据类型

  字典的值:任意数据类型

数据类型分类,主要是可变和不可变

字典的键是唯一的。

字典的顺序:严格意义上讲,是无序的。

  3.5之前,字典是无序的

  3.6开始,字典创建的时候,是按照一定的顺序插入的值,看起来是有序的。

字典的增,删,改,查

  1. #第一种:有则覆盖,无则添加
  2. dic = {'name':'superman'}
  3. dic['hobby'] = 'girl'
  4. print(dic)
  1. #第二种 setdeafult
  2. #这个没有加键值,None也是数据
  3. dic = {'name':'superman'}
  4. dic.setdefault('hobby','girl')
  5. print(dic)

 输出效果:

dic.setdefault('hobby') 虽然只指定了key,没有指定value,默认会填充None

添加键值对

  1. dic = {'name':'superman','age':21}
  2. dic.setdefault('hobby','girl')
  3. print(dic)

 输出结果:

添加一个已经存在的key

  1. dic = {'name':'superman','age':21}
  2. dic.setdefault('name','江江')
  3. print(dic)

 输出

 

 上述2个添加的方法,只能一个个添加。 

 删

  1. dic = {'name':'superman','age':21}
  2. print(dic.pop('age'))
  3. print(dic)

执行后输出结果:

删除一个不存在的key

  1. dic = {'name':'superman','age':21}
  2. print(dic.pop('hobby'))

执行后输出结果:

删除一个不存在的key,并指定默认返回值None

  1. dic = {'name':'superman','age':21}
  2. print(dic.pop('hobby',None))
  3. print(dic)

 执行输出:

推荐使用上述方法,删除一个key。因为如果key不存在时,不会报错,返回None。程序员最怕报错了!

  1. #clear()清空
  2. dic = {'name':'superman','age':22}
  3. dic.clear()
  4. print(dic)

执行后输出:

  1. #删除字典
  2. dic = {'name':'superman','age':21}
  3. del dic['hobby']
  4. print(dic)

 执行后输出结果:

推荐使用pop删除,并指定None

 

 改

  1. dic = {'name':'superman','age':21}
  2. dic['name'] = 'zhangsan'
  3. print(dic)

执行输出:

update() 针对2个字典的修改 

  1. dic = {'name':'superman','age':21}
  2. dic2 = {'name':'john','alan':76}
  3. dic2.update(dic)
  4. print(dic)
  5. print(dic2)

 执行输出结果:

说明:

update()修改原则

有相同的就覆盖,没有的就添加

通过key查找

  1. dic = {'name':'superman','age':21}
    print(dic['name'])

执行后输出结果:

通过value 查找

 

  1. dic = {'name':'superman','age':21}
  2. print(dic['superman'])

执行后报错:

注意:字典只能通过key查询,不能通过value查询,否则报错

 

  1. #get()通过key 查询
  2. dic = {'name':'superman','age':21}
  3. print(dic.get('name'))

  执行后输出:

  1. #查询一个不存在的key
  2. dic = {'name':'superman','age':21}
  3. print(dic.get('hobby'))

  执行后输出为:None

 默认的None返回值是可以改变的

 

  1. dic = {'name':'superman','age':21}
  2. print(dic.get('hobby','查询失败!'))

  执行后输出的结果:

 

  1. #如果需要查询多个key,请使用for循环
  2. dic = {'name': 'superman', 'age': 21}
  3. for i in dic:
  4. print(i)

  

  1. #其它操作方法:
  2. dic = {'name': 'superman', 'age': 21}
  3. print(dic.keys())
  4. print(type(dic.keys()))

  执行后输出结果:

  1. # keys()方法输出的数据是一个特殊类型,它相当于把所有的key放到了一个容器里面。
  2. # 它类似于列表的容器,当它并不是列表。
  3. #它可以循环
  4. dic = {'name': 'superman', 'age': 21}
  5. for i in dic.keys():
  6. print(i)

执行后输出结果:

  1. # values()
  2. # 把所有的value放到一个容器里面
  3. dic = {'name': 'superman', 'age': 21}
  4. for i in dic.values():
  5. print(i)

执行后输出:

  

  1. # items()
  2. # 将键值对作为一个整体,放到元组中。集中放到一个容器中。
  3. dic = {'name': 'superman', 'age': 21}
  4. for i in dic.items():
  5. print(i)

执行输出结果:

 

  1. dic = {'name': 'superman', 'age': 21}
  2. print(list(dic.keys()))

  执行输出结果:

 

 

  

  

  1.  

python全栈学习--day5的更多相关文章

  1. python全栈学习路线

    python全栈学习路线-查询笔记 查询目录 一,硬件                                                                    十一,数据 ...

  2. python全栈开发-Day5 集合

    python全栈开发-Day5 集合 一.首先按照以下几个点展开对集合的学习 #一:基本使用 1 .用途 2 .定义方式 3 .常用操作+内置的方法 #二:该类型总结 1. 存一个值or存多个值 只能 ...

  3. python全栈学习--day4

    列表 说明:列表是python中的基础数据类型之一,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:   1 li = ['alex',123,Ture,(1,2,3,'wu ...

  4. python全栈学习--day3

    一.基础数据类型 基础数据类型,有7种类型,存在即合理. 1.int 整数 主要是做运算的 .比如加减乘除,幂,取余  + - * / ** %...2.bool 布尔值 判断真假以及作为条件变量3. ...

  5. python全栈学习--day2

    一.in的使用 说明:in有相当多的用处,比如判断,循环for 等. 实例一:in 操作符用于判断关键字是否存在于变量中 s = '男人john' print('男孩' in s) print('男孩 ...

  6. python全栈学习--day1

      计算机基础 CPU:中央处理器 内存:4GB,8GB,临时处理事务的地方,供给CPU数据. 硬盘:相当于电脑的数据库,存储着大量的数据,文件,电影等. 操作系统:执行者,支配所有关系 window ...

  7. Python全栈学习_day002知识点

    今日大纲: . while循环 . 格式化输出 . 运算符 . 编码初识 1. while循环 - while 无限循环: while True: # 死循环 print('大悲咒') print(' ...

  8. Python全栈开发day5

    一.lambda表达式 对于简单的函数,存在一种简便的表示方式,即:lambda表达式 1 2 3 >>> shaw = lambda x,y:x + y >>> ...

  9. python全栈开发-Day5 元组、字典

    python全栈开发-Day5  元组.字典 一.前言 首先,不管学习什么数据类型,我们都带着以下几个问题展开学习: #1:基本使用 1 .用途 2 .定义方式 3.常用操作+内置的方法 #2:该类型 ...

随机推荐

  1. 教我徒弟Android开发入门(三)

    前言: 老实说,我有点不知道该讲什么了,希望看过的人能给我提提意见,感激不尽. 本期知识点: 长按事件,log的简单使用,双击退出程序功能的实现 正文: 上一期我们了解到点击事件其实就是让控件绑定一个 ...

  2. linux配置wifi连接并通过ssh代理开启socks代理

    1, 命令行配置连接wifi具体我是用的cubieboard2上Debian主机,其中配置wifi的命令行有wpa_cli,具体用法步骤如下.wpa_cli 命令行执行需要root权限,详细用法请见 ...

  3. HALCON不支持的设备中,获取图像

    HALCON不支持的设备中,获取图像   参考(HALCON手册): Solution_guide_II_A_image_acquisiton.pdf image_acquisition_interf ...

  4. Postman教程——发送第一个请求

    系列文章首发平台为果冻想个人博客.果冻想,是一个原创技术文章分享网站.在这里果冻会分享他的技术心得,技术得失,技术人生.我在果冻想等待你,也希望你能和我分享你的技术得与失,期待. 前言 过年在家,闲来 ...

  5. ArcGIS API for JavaScript 4.4 版本加载谷歌地图

    ArcGIS API for JavaScript 4.X 版本升级后,API发生了很大的变化. 其中就支持了WebEarth展示,主要是通过 esri/views/SceneView 实现的. 在新 ...

  6. [NOIP2017] 逛公园

    [NOIP2017] 逛公园 题目大意: 给定一张图,询问长度 不超过1到n的最短路长度加k 的1到n的路径 有多少条. 数据范围: 点数\(n \le 10^5\) ,边数\(m \le 2*10^ ...

  7. 【HNOI2004】敲砖块(动态规划)

    越来越懒了,不想粘题目 题解 样例的输入是个很好的提醒, 把他往左边对齐之后 如果要打掉某个位置,那么必须要打掉右上方的所有砖 然后就很明显的一个DP了.... #include<iostrea ...

  8. 【HNOI 2002 】营业额统计(splay)

    题面 Description Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营 ...

  9. Luogu3527:[POI2011]MET-Meteors

    题面 Luogu Sol 整体二分 比较简单,当练手题 每次树状数组统计 # include <bits/stdc++.h> # define RG register # define I ...

  10. Windows Developer Day - MSIX and Advanced Installer

    前面一篇我们介绍了 Adaptive Cards 的基础知识,而在 Windows Developer Day 的 Modern Application Experience 环节,还有一个需要划重点 ...