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通过ElementTree操作XML获取结点读取属性美化XML
Dec 02 Python
python实现web方式logview的方法
Aug 10 Python
Python实现两款计算器功能示例
Dec 19 Python
Python subprocess模块详细解读
Jan 29 Python
python实现小球弹跳效果
May 10 Python
利用python实现逐步回归
Feb 24 Python
Python使用ElementTree美化XML格式的操作
Mar 06 Python
Python Selenium 设置元素等待的三种方式
Mar 18 Python
python新式类和经典类的区别实例分析
Mar 23 Python
Python利用matplotlib绘制散点图的新手教程
Nov 05 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
Nov 28 Python
Python爬虫基础讲解之请求
May 13 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连接MongoDB示例代码
2012/09/06 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
jquery 简短右键菜单 多浏览器兼容
2010/01/01 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
js生成随机数之random函数随机示例
2013/12/20 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
初探nodeJS
2017/01/24 NodeJs
Bootstrap模态框案例解析
2017/03/05 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
原生js检测页面加载完毕的实例
2018/09/11 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
在VUE style中使用data中的变量的方法
2020/06/19 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
利用Python实现微信找房机器人实例教程
2019/03/10 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
事业单位公务员的职业生涯规划
2014/01/15 职场文书
建筑工地门卫岗位职责
2014/04/30 职场文书
社区活动总结报告
2014/05/05 职场文书
档案信息化建设方案
2014/05/16 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
护士先进个人总结
2015/02/13 职场文书
2016新年年会主持词
2015/07/06 职场文书
linux中nohup和后台运行进程查看及终止
2021/06/24 Python