前言:

- 字典属于一种新的数据结构,称为映射(mapping)
    - 字典的作用和列表类似,都是用来存储对象的容器
    - 列表存储数据的性能很好,但是查询数据的性能的很差
    - 在字典中每一个元素都有一个唯一的名字,通过这个唯一的名字可以快速的查找到指定的元素
    - 在查询元素时,字典的效率是非常快的
    - 在字典中可以保存多个对象,每个对象都会有一个唯一的名字
        这个唯一的名字,我们称其为键(key),通过key可以快速的查询value
        这个对象,我们称其为值(value)
        所以字典,我们也称为叫做键值对(key-value)结构
        每个字典中都可以有多个键值对,而每一个键值对我们称其为一项(item)

一, 字典
 使用 {} 来创建字典
d = {} # 创建了一个空字典

创建一个保护有数据的字典
 语法:
  {key:value,key:value,key:value}

字典的值可以是任意对象
   字典的键可以是任意的不可变对象(int、str、bool、tuple ...),但是一般我们都会使用str       字典的键是不能重复的,如果出现重复的后边的会替换到前边的
 d = {'name':'孙悟空' , 'age':18 , 'gender':'男' , 'name':'sunwukong'}
d = {
'name':'孙悟空' ,
'age':18 ,
'gender':'男' ,
'name':'sunwukong'
}

print(d , type(d))

需要根据键来获取值
 print(d['name'],d['age'],d['gender'])

如果使用了字典中不存在的键,会报错
 print(d['hello']) KeyError: 'hello'

二 , 字典的使用

创建字典
 使用{}
 语法:{k1:v1,k2:v2,k3:v3}

使用 dict()函数来创建字典
 每一个参数都是一个键值对,参数名就是键,参数名就是值(这种方式创建的字典,key都是字符串)
d = dict(name='孙悟空',age=18,gender='男')

也可以将一个包含有双值子序列的序列转换为字典
 双值序列,序列中只有两个值,[1,2] ('a',3) 'ab'
子序列,如果序列中的元素也是序列,那么我们就称这个元素为子序列
 [(1,2),(3,5)]
d = dict([('name','孙悟饭'),('age',18)])
 print(d , type(d))
d = dict(name='孙悟空',age=18,gender='男')

len() 获取字典中键值对的个数
 print(len(d))

in 检查字典中是否包含指定的键
 not in 检查字典中是否不包含指定的键
 print('hello' in d)

获取字典中的值,根据键来获取值
 语法:d[key]
 print(d['age'])

n = 'name'
 print(d[n])

通过[]来获取值时,如果键不存在,会抛出异常 KeyError
 get(key[, default]) 该方法用来根据键来获取字典中的值
   如果获取的键在字典中不存在,会返回None
   也可以指定一个默认值,来作为第二个参数,这样获取不到值时将会返回默认值
 print(d.get('name'))
 print(d.get('hello','默认值'))

修改字典
 d[key] = value 如果key存在则覆盖,不存在则添加
d['name'] = 'sunwukong' # 修改字典的key-value
d['address'] = '花果山' # 向字典中添加key-value

print(d)
 setdefault(key[, default]) 可以用来向字典中添加key-value
   如果key已经存在于字典中,则返回key的值,不会对字典做任何操作
   如果key不存在,则向字典中添加这个key,并设置value
result = d.setdefault('name','猪八戒')
result = d.setdefault('hello','猪八戒')

print('result =',result)
 print(d)

update([other])
 将其他的字典中的key-value添加到当前字典中
 如果有重复的key,则后边的会替换到当前的
d = {'a':1,'b':2,'c':3}
d2 = {'d':4,'e':5,'f':6, 'a':7}
d.update(d2)

print(d)
 删除,可以使用 del 来删除字典中的 key-value
del d['a']
del d['b']

popitem()
 随机删除字典中的一个键值对,一般都会删除最后一个键值对
   删除之后,它会将删除的key-value作为返回值返回
   返回的是一个元组,元组中有两个元素,第一个元素是删除的key,第二个是删除的value
 当使用popitem()删除一个空字典时,会抛出异常 KeyError: 'popitem(): dictionary is empty'
 d.popitem()
 result = d.popitem()

pop(key[, default])
 根据key删除字典中的key-value
 会将被删除的value返回!
 如果删除不存在的key,会抛出异常   如果指定了默认值,再删除不存在的key时,不会报错,而是直接返回默认值
result = d.pop('d')
result = d.pop('z','这是默认值')

del d['z'] z不存在,报错
 result = d.popitem()
 result = d.popitem()
 result = d.popitem()
 result = d.popitem()

clear()用来清空字典
d.clear()

print('result =',result)
 print(d)

copy()
 该方法用于对字典进行浅复制
 复制以后的对象,和原对象是独立,修改一个不会影响另一个
 注意,浅复制会简单复制对象内部的值,如果值也是一个可变对象,这个可变对象不会被复制
d = {'a':1,'b':2,'c':3}
d2 = d.copy()
# d['a'] = 100

d = {'a':{'name':'孙悟空','age':18},'b':2,'c':3}
d2 = d.copy()
d2['a']['name'] = '猪八戒'

print('d = ',d , id(d))
print('d2 = ',d2 , id(d2))

Python入门基础(六) 字典相关推荐

  1. Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制

    (课程相关的所有资料代码,已上传至CSDN,请自行下载 https://download.csdn.net/download/qq_34243930/10764180 ) BMR 计算器 1.0 Py ...

  2. 【目录】Python 入门基础篇 <(^-^)>

    Python 入门基础篇 一.关于Python的介绍与准备工作 Python基础介绍 Jupyter notebook基础介绍 Jupyter notebook打开问题 Jupyter noteboo ...

  3. python笔记基础-Python入门基础知识学习笔记之一

    为什么要写这篇文章? 本人做过Objective-C开发,现在在用C#做WinForm开发.近段时间在学习Python入门基础知识时,发现有很多知识点和Objective-C的不一样.故想通过本文记录 ...

  4. python 判断列表所有元素是否为某个值_这应该是最详细的Python入门基础语法总结!...

    这应该是最详细的Python入门基础语法总结! 这应该是最详细的Python入门基础语法总结! 定义变量,使用变量 input 用户自己输入值 print 打印值 可以输出多个变量 %d|%s 用于输 ...

  5. python入门基础教程-Python入门基础教程:WSGI

    原标题:Python入门基础教程:WSGI WSGI 简介 WSGI 是什么 WSGI 是 Python Web Server Gateway Interface 的缩写,是描述 Web 服务器与 P ...

  6. B站马士兵python入门基础版详细笔记(6)

    前言: 这篇文章是B站学习python入门基础班的视频的第五 六章内容,主要讲述的是列表,主要包括列表的创建,以及他的元素的增.删.查.改操作命令. 一.列表的初始化 为什么要使用列表? 列表就好比C ...

  7. B站马士兵python入门基础版详细笔记(4)

    前言: 这篇文章是B站学习python入门基础班的视频的第四章内容,主要讲述的是if-else语句,但是不包括循环结构,循环结构在下一章笔记中有记叙 一.顺序结构 什么是顺序结构呢?比如说 '''把大 ...

  8. 儿童python教程书-Python入门基础教程(儿童版) [分享一本入门级教程]

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1. 推荐书名 No Starch--Python for ...

  9. python入门基础代码初学

    python入门基础代码初学 一.检查python安装 二.print使用 二.使用python运算 三.enumerate()函数 一.检查python安装 PS C:\Users\admin> ...

  10. Python入门基础知识学什么?

    Python基础知识主要是针对一些零基础的同学安排的,虽说Python是相对比较简单的一门编程语言,但是没有基础的同学还是要进行系统的学习,那么Python入门基础知识学什么呢?来看看下面小编的详细介 ...

最新文章

  1. 十进制转换成十六进制c语言 链栈,C语言 链栈 实现十进制转换二进制,八进制,十六进制...
  2. python培训比较好的机构-python哪家的培训比较好?
  3. 5、kafka的操作
  4. mysql使用数据库预处理_php中对MYSQL操作之预处理技术(2)数据库dql查询语句
  5. linux提升网络实时性,通过调整Linux内核参数提升网络性能
  6. Qt图形界面编程入门(7)
  7. 玩玩机器学习4——TensorFlow基础之激活函数
  8. 北漂、杭漂,居大不易,他们是怎么买第一套房子的
  9. PHP实现QQ达人信息抓取
  10. java中synized_ConcurrentHashMap和Collection s.SynizedMap(Map)
  11. VS中的scanf_s函数和scanf
  12. vue和echarts实现地图航线
  13. 阿里巴巴图表库 Bizcharts 正式开源
  14. gateway 动态路由
  15. python魔兽挂机_实现 WOW 插件的简单步骤
  16. 修改Linux的分辨率
  17. 计算机无法显示输入法怎么办,电脑系统教程:win7输入法不显示怎么办
  18. nacos修改用户名密码
  19. 海思Hi3519AV100深度学习方案(一)darknet转caffmodel之caffe安装(基于Ubuntu16.04+python3.5+opencv3.4.0+cuda10.0)
  20. CentOS7和CentOS8 FreeSWITCH 1.10.7 简单图形化界面5--阿里云服务器设置

热门文章

  1. 计算机网络课题目,计算机网络课程学论文选题 计算机网络课程论文题目怎么取...
  2. 意念机Umind及其控制无人机
  3. 如何关闭弹窗“你要允许此应用对你的设备进行更改吗”
  4. 利用python检测IP地址变化并触发事件
  5. 200+篇Graph4NLP文献集:图深度学习在NLP任务的应用
  6. Android 性能优化必知必会(2020-5-16)
  7. BSON及BSON和JSON的区别
  8. 使用libvirt和qemu将pci pass through设备添加到虚拟机上
  9. Linux学习笔记---命令篇
  10. 地图白化function