python全栈学习--day5
字典
特点:字典是python中唯一的映射类型,采用键值对(key-value) 的形式存数据。
存储大量的数据,是关系型数据,查询数据快。
字典初始说明:
遍历字典从列表开始,列表是从头便利到尾的。字典使用二分查找。先劈一半,不匹配,在劈一半,再找。最后找到对应的值。
如果字典的数据是1到~ 00
例如:
要找75
对于字符串查找
每一个字符串,都有一个hash值,对应指定的字符
每个字符,hash表,都设定好了,是唯一的。
示例:
print(hash('a'))
输出:

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

数据类型的分类:


1. 可变数据类型(不可哈希):list,dict,set
2. 不可变数据类型(可哈希):int, bool,str,tuple
容器类(承载各种数据类型):list, tuple ,dic
示例:
a = 'superman'
a.capitalize()
对于原数据,没有改变。但开辟了新的内存空间。
字典的键:必须是不可变数据类型
字典的值:任意数据类型
数据类型分类,主要是可变和不可变
字典的键是唯一的。
字典的顺序:严格意义上讲,是无序的。
3.5之前,字典是无序的
3.6开始,字典创建的时候,是按照一定的顺序插入的值,看起来是有序的。
字典的增,删,改,查
#第一种:有则覆盖,无则添加
dic = {'name':'superman'}
dic['hobby'] = 'girl'
print(dic)
#第二种 setdeafult
#这个没有加键值,None也是数据
dic = {'name':'superman'}
dic.setdefault('hobby','girl')
print(dic)
输出效果:

dic.setdefault('hobby') 虽然只指定了key,没有指定value,默认会填充None
添加键值对
dic = {'name':'superman','age':21}
dic.setdefault('hobby','girl')
print(dic)
输出结果:

添加一个已经存在的key
dic = {'name':'superman','age':21}
dic.setdefault('name','江江')
print(dic)
输出

上述2个添加的方法,只能一个个添加。
删
dic = {'name':'superman','age':21}
print(dic.pop('age'))
print(dic)
执行后输出结果:

删除一个不存在的key
dic = {'name':'superman','age':21}
print(dic.pop('hobby'))
执行后输出结果:

删除一个不存在的key,并指定默认返回值None
dic = {'name':'superman','age':21}
print(dic.pop('hobby',None))
print(dic)
执行输出:

推荐使用上述方法,删除一个key。因为如果key不存在时,不会报错,返回None。程序员最怕报错了!
删
#clear()清空
dic = {'name':'superman','age':22}
dic.clear()
print(dic)
执行后输出:

#删除字典
dic = {'name':'superman','age':21}
del dic['hobby']
print(dic)
执行后输出结果:

推荐使用pop删除,并指定None
改
dic = {'name':'superman','age':21}
dic['name'] = 'zhangsan'
print(dic)
执行输出:

update() 针对2个字典的修改
dic = {'name':'superman','age':21}
dic2 = {'name':'john','alan':76}
dic2.update(dic)
print(dic)
print(dic2)
执行输出结果:

说明:
update()修改原则
有相同的就覆盖,没有的就添加
查
通过key查找
dic = {'name':'superman','age':21}
print(dic['name'])
执行后输出结果:

通过value 查找
dic = {'name':'superman','age':21}
print(dic['superman'])
执行后报错:

注意:字典只能通过key查询,不能通过value查询,否则报错
#get()通过key 查询
dic = {'name':'superman','age':21}
print(dic.get('name'))
执行后输出:

#查询一个不存在的key
dic = {'name':'superman','age':21}
print(dic.get('hobby'))
执行后输出为:None
默认的None返回值是可以改变的
dic = {'name':'superman','age':21}
print(dic.get('hobby','查询失败!'))
执行后输出的结果:

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

#其它操作方法:
dic = {'name': 'superman', 'age': 21}
print(dic.keys())
print(type(dic.keys()))
执行后输出结果:

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

# values()
# 把所有的value放到一个容器里面
dic = {'name': 'superman', 'age': 21}
for i in dic.values():
print(i)
执行后输出:
# items()
# 将键值对作为一个整体,放到元组中。集中放到一个容器中。
dic = {'name': 'superman', 'age': 21}
for i in dic.items():
print(i)
执行输出结果:

dic = {'name': 'superman', 'age': 21}
print(list(dic.keys()))
执行输出结果:

python全栈学习--day5的更多相关文章
- python全栈学习路线
python全栈学习路线-查询笔记 查询目录 一,硬件 十一,数据 ...
- python全栈开发-Day5 集合
python全栈开发-Day5 集合 一.首先按照以下几个点展开对集合的学习 #一:基本使用 1 .用途 2 .定义方式 3 .常用操作+内置的方法 #二:该类型总结 1. 存一个值or存多个值 只能 ...
- python全栈学习--day4
列表 说明:列表是python中的基础数据类型之一,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: 1 li = ['alex',123,Ture,(1,2,3,'wu ...
- python全栈学习--day3
一.基础数据类型 基础数据类型,有7种类型,存在即合理. 1.int 整数 主要是做运算的 .比如加减乘除,幂,取余 + - * / ** %...2.bool 布尔值 判断真假以及作为条件变量3. ...
- python全栈学习--day2
一.in的使用 说明:in有相当多的用处,比如判断,循环for 等. 实例一:in 操作符用于判断关键字是否存在于变量中 s = '男人john' print('男孩' in s) print('男孩 ...
- python全栈学习--day1
计算机基础 CPU:中央处理器 内存:4GB,8GB,临时处理事务的地方,供给CPU数据. 硬盘:相当于电脑的数据库,存储着大量的数据,文件,电影等. 操作系统:执行者,支配所有关系 window ...
- Python全栈学习_day002知识点
今日大纲: . while循环 . 格式化输出 . 运算符 . 编码初识 1. while循环 - while 无限循环: while True: # 死循环 print('大悲咒') print(' ...
- Python全栈开发day5
一.lambda表达式 对于简单的函数,存在一种简便的表示方式,即:lambda表达式 1 2 3 >>> shaw = lambda x,y:x + y >>> ...
- python全栈开发-Day5 元组、字典
python全栈开发-Day5 元组.字典 一.前言 首先,不管学习什么数据类型,我们都带着以下几个问题展开学习: #1:基本使用 1 .用途 2 .定义方式 3.常用操作+内置的方法 #2:该类型 ...
随机推荐
- Java中的三目运算符
1.问题背景 以下代码运行的结果是: A.hai B.1987 C.1988 D.以上答案都不对 /** * 三目运算符 * A.hai * B.1987 * C.198 ...
- Flex实现双轴条状图
1.问题背景 一般的,柱状图可以实现双轴图,但是如何实现双轴条状图? 2.实现实例 <?xml version="1.0" encoding="utf-8" ...
- VBA Excel WideCharToMultiByte Compile error on 64-bit System
Compile Error: The code in this project must be updated for use on64-bit systems. Please review and ...
- Linux之23个重要命令
作为工作几年的Linux运维老司机,总结了Linux命令行的常用的一些用法,希望对您有所收获. 1. 搜索 在vi和vim中如果打开一个很大的文件,不容易找到对应的内容,可以使用自带的搜索关键字进行搜 ...
- Ubuntu出现ERR_PROXY_CONNECTION_FAILED错误解决方案
我是Ubuntu新手,因为想查看国外的资料,然后安装了灯笼,结果打开谷歌浏览器出现了ERR_PROXY_CONNECTION_FAILED错误,未连接到互联网,代理服务器出现错误,然后Firefox也 ...
- 【CJOJ1494】【洛谷2756】飞行员配对方案问题
题面 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1 ...
- [TJOI2015]旅游
树链剖分+线段树 线段树维护max,min,左往右的最大差,右往左的最大差 求LCA时一定要注意方向 # include <bits/stdc++.h> # define RG regis ...
- [BZOJ1083] [SCOI2005] 繁忙的都市 (kruskal)
Description 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口 ...
- 剑指offer-(19)顺时针打印矩阵
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2, ...
- CentOS 6.4 配置 Hadoop 2.6.5
(以下所有文件:点此链接 里面还有安装的视频教学,我这里是亲测了一次,如有报错请看红色部分.实践高于理论啊兄弟们!!) 一.安装CentOS 6.4 在VMWare虚拟机上,我设置的用户是hadoop ...