Python数据类型之Dict字典实例详解


Posted in Python onMay 07, 2019

本文实例讲述了Python数据类型之Dict字典。分享给大家供大家参考,具体如下:

dict字典

1.概述

dict也是一种存储方式,类似于list和tuple,但是,字典采用键—值(key—value)的形式存储。

优点:具有极快的查找速度。

2.key的特性

① 字典中的key必须唯一
② **.key必须是不可变对象**

例如:字符串、整数等都是不可变的,可以作为key

list是可变的,不能作为key

应用场景举例:保存学生成绩

可以采用字典,将学生的学号或者名字作为key,成绩为value进行存储,方便查找。

3.字典的创建

语法:

字典名 = {键1:值1,键2:值2,…}

dist1 = {'tom':90,'lili':78, 'lele':92}
print(dist1)
print(dict(a=1,b=2,c=3))

输出:

{'tom': 90, 'lili': 78, 'lele': 92}
{'a': 1, 'b': 2, 'c': 3}

3.1列表中的元组转字典:

list1= [('a',1),('b',2)]
print({a:b for a,b in list1})
>>>{'a': 1, 'b': 2}

4.字典操作

4.1访问元素

语法:元素 = 字典名[key]

dist1 = {'tom':90,'lili':78, 'lele':92}
print(dist1['tom'])

输出:

90

注意:在key不存在的情况下,会报错。

语法: 元素 = 字典名.get(key)

功能:使用get的方法获取值,若key存在,则返回value的值,若key不存在则返回None

dist1 = {'tom':90,'lili':78, 'lele':92}
value = dist1.get('tom')
print(value)

输出:

90

4.2 添加元素

语法:字典名[key] = value

dist1 = {'tom':90,'lili':78, 'lele':92}
dist1['lisi'] = 89
print(dist1)

输出:

{'tom': 90, 'lili': 78, 'lele': 92, 'lisi': 89}

注意:一个key只能对应一个value,多次对一个key的value赋值,后面的值会把前面的值覆盖掉。

4.3 删除元素

语法:字典名.pop(key)

dist1 = {'tom':90,'lili':78, 'lele':92}
print(dist1.pop('tom'))
print(dist1)

输出:

90
{'lili': 78, 'lele': 92}

5.字典的遍历

字典在内存中存储是无序的,因此无法通过下标来获取值。

5.1 使用for循环遍历

语法:

获取键

for key in dict:
​ print(key)

获取值

for value in dict.values() :
​ print(value)

同时获取键和值

for k, v in dist.items() :
​ print(k, v)

dict1 = {'tom':90,'lili':78, 'lele':92}
#获取字典的key
for key in dict1:
 print(key)
#获取字典中的value 
for value in dict1.values():
 print(value)
#同时获取字典中的key与value
for k, v in dict1.items():
 print(k, v)

输出:

tom
lili
lele
90
78
92
tom 90
lili 78
lele 92

# 通过函数来遍历字典
dict1 = {'tom':90,'lili':78, 'lele':92}
for i,v in enumerate(dict1):
 print(i,v,dict1[v])

输出:

0 tom 90
1 lili 78
2 lele 92

5.2 字典对调

d ={'d': 4, 'a': 1, 'b': 2, 'c': 3}
d = {v: k for k, v in d.items()}
print(d)

输出:

{4: 'd', 1: 'a', 2: 'b', 3: 'c'}

6.与list的区别

1.dist的查找和插入的速度极快,不会随着key-value的增加而变慢,但是list在查找的时候需要从头向后挨个遍历元素,并且当数据量增大的时候,速度也会随着变慢

2.dist需要占用大量的内存,内存浪费多,而list只相当于存储了字典的key或者value部分,并且数据是紧密排列的。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python中元类用法实例
Oct 10 Python
python获取文件扩展名的方法
Jul 06 Python
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
Python设置Socket代理及实现远程摄像头控制的例子
Nov 13 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
Sep 11 Python
Python:Scrapy框架中Item Pipeline组件使用详解
Dec 27 Python
Python中生成器和迭代器的区别详解
Feb 10 Python
详解Python中的四种队列
May 21 Python
《与孩子一起学编程》python自测题
May 27 Python
详解python中*号的用法
Oct 21 Python
Tensorflow实现多GPU并行方式
Feb 03 Python
Python configparser模块配置文件过程解析
Mar 03 Python
Python分支语句与循环语句应用实例分析
May 07 #Python
Python正则表达式实现简易计算器功能示例
May 07 #Python
深入浅析Python 中 is 语法带来的误解
May 07 #Python
利用python如何在前程无忧高效投递简历
May 07 #Python
Python可迭代对象操作示例
May 07 #Python
python实现支付宝转账接口
May 07 #Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 #Python
You might like
PHP中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
Script的加载方法小结
2011/01/12 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
jQuery实现友好的轮播图片特效
2015/01/12 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
AngularJS中的按需加载ocLazyLoad示例
2017/01/11 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
Vue.use源码分析
2017/04/22 Javascript
JavaScript事件处理程序详解
2017/09/19 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
jQuery实现鼠标滑动切换图片
2020/05/27 jQuery
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
使用python实现knn算法
2017/12/20 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
基于python实现从尾到头打印链表
2019/11/02 Python
Python多进程编程常用方法解析
2020/03/26 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
C#软件工程师英语面试题
2015/06/07 面试题
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
元旦晚会邀请函
2014/02/01 职场文书
路政管理毕业自荐书范文
2014/02/10 职场文书
2015年项目工作总结
2015/04/29 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
Python OpenCV实现图形检测示例详解
2022/04/08 Python