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 re正则表达式模块(Regular Expression)
Jul 16 Python
python通过getopt模块如何获取执行的命令参数详解
Dec 29 Python
详解用python实现简单的遗传算法
Jan 02 Python
详解python中asyncio模块
Mar 03 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
Python 获取div标签中的文字实例
Dec 20 Python
对pandas的算术运算和数据对齐实例详解
Dec 22 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
Mar 27 Python
Python中turtle库的使用实例
Sep 09 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
Oct 24 Python
python opencv 检测移动物体并截图保存实例
Mar 10 Python
GDAL 矢量属性数据修改方式(python)
Mar 10 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
PHP4实际应用经验篇(7)
2006/10/09 PHP
PHP 危险函数全解析
2009/09/09 PHP
linux iconv方法的使用
2011/10/01 PHP
php中\r \r\n \t的区别示例介绍
2014/02/08 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
php实现socket推送技术的示例
2017/12/20 PHP
Laravel5.7 数据库操作迁移的实现方法
2019/04/12 PHP
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
Bootstrap页面标题Page Header的实现方法
2017/03/22 Javascript
js如何编写简单的ajax方法库
2017/08/02 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
vue等两个接口都返回结果再执行下一步的实例
2020/09/08 Javascript
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
python 输出一个两行字符的变量
2009/02/05 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
python包的导入方式总结
2021/03/02 Python
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
2013/01/31 HTML / CSS
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
国庆节文艺活动方案
2014/02/03 职场文书
函授本科自我鉴定
2014/02/04 职场文书
投资建议书模板
2014/05/12 职场文书
公务员政审材料
2014/12/23 职场文书
三潭印月的导游词
2015/02/12 职场文书
学校学期工作总结
2015/08/13 职场文书
感谢师恩主题班会
2015/08/17 职场文书
Python OpenCV之常用滤波器使用详解
2022/04/07 Python