五、字典的功能

简介: ---恢复内容开始--- 字典是由每一组键值对组成  每个键值对都是关系型数据,查询速度很快  通过二分法查找 dic = {'key':'value','name':'yy','hobby':'heheh','list':[2,3,'ee'],2:True .

---恢复内容开始---

字典是由每一组键值对组成  每个键值对都是关系型数据,查询速度很快  通过二分法查找

dic = {'key':'value','name':'yy','hobby':'heheh','list':[2,3,'ee'],2:True

....}

数据类型的另一种分类方式

可变数据类型(不可哈希类):list,dict,set

不可变数据类型(可哈希类):str  int   bool  tuple 

容器类型 (承载各种数据类型)                             : list  dic  tuple 

字典的的增、删、改、查

字典的键是唯一的,一个字典不可能存在两个相同的键

字典的顺序:3.5之前都是无序的  3.6 之后有序的(创建字典的时候按照一定的顺序插入,看起来有序的)  

字典的增、删、改。查

1.哈希表  每个字典都有一个哈希表 通过哈希表来定位每个键值对  方便查找 

 

dic = {'key':'value','name':'yy','hobby':'heheh','list':[2,3,'ee'],2:True}
print(hash('key'))
print(hash('value'))

#-2335181179344269333
#5043510051693866644

 

每个每个键值对都有hash数 这个hash数值 是不断变化的

字典的增加

第一种:有则覆盖,无则添加  添加的位置是无序的 打印顺序也是无序的 每次打印顺序都不一致

 

dic = {'key':'value','name':'yy','hobby':'heheh','list':[2,3,'ee'],2:True}
dic['姓名'] = '张三'
dic['key'] = 'hehe'
print(dic)
#{'list': [2, 3, 'ee'], 2: True, 'name': 'yy', '姓名': ['张三'], 'key': 'value', 'hobby': 'heheh'}
#{'list': [2, 3, 'ee'], 'key': 'hehe', 2: True, 'name': 'yy', 'hobby': 'heheh'}

 

第二种 setdefault   有则不变 无则添加

 

dic = {'key':'value','name':'yy','hobby':'heheh'}
dic.set.default('key','大炮')
dic.set.default('sex','femal')
print(dic)
# dic = {'key':'value','name':'yy','hobby':'heheh'}
#
dic = {'key':'value','name':'yy','sex':'femal',hobby':'heheh'} 也是无序的增加进去
第三种 update
dic1.update(dic2)
将dic2中的键值对加入到dic1中,如果dic2中的键和dic1中的重复,则用dic2中的值覆盖dic1中的值 反之亦然
字典的删除
dic = {'key':'value','name':'yy','hobby':'heheh'}
第一种: pop 有返回值
print(dic.pop('key') 只能删除键 打印的结果会是这个键对应的值 如果删除值 会报错
# value
print(dic.pop('sex',None) 如果你要删除的键在这个字典中不存在,这种会返回你设定的值None 如果不设置的话 会报错
# None
第二种: clear
直接清空整个字典 留下空的字典
dic.clear()
print(dic)
#{}
第三种:del
dic = {'key':'value','name':'yy','hobby':'heheh'}
del dic
print(dic)
报错
del dic['key']
只能通过键来删除值 如果删除的是值 会报错
print(dic)
#{
'name':'yy','hobby':'heheh'}
第四种:popitem         这是个逗比功能 随机删除字典中的键值对 但是可以返回
print(dic.popitem())
 
 字典的查
dic = {'key':'value','name':'yy','hobby':'heheh'}

第一种:通过键来查值
print(dic['key']}

 

#  value 

第二种:get  通过键来查找值

print(dic.get('key')

#value

print(dic.get('sex','你要查找的没有'))   如果要查找的键 不存在则默认返回None  如果自己定义了参数 则返回你定义的

#你要查找的没有   

其他方法   C

 

dic.values()    把字典的键值对中的值 单独拉出来组成一个数据类型为dic_values的([])

print(dic.values())   dict_values(['heheh', 'value', 'yy'])

 

 

dic.keys()          把字典的键值对中的键 单独拉出来组成一个数据类型为dic_key的([])

print(dic.keys())    dict_keys(['name', 'hobby', 'key'])

dic.items()        把字典的键值拉出来组成一个数据类型为dic_items的([])

print(dic.items())  dict_items([('key', 'value'), ('name', 'yy'), ('hobby', 'heheh')])

  以上三种方法得出来的数据类型只能循环  但是可以转换为列表的数据类型

分别赋值  这个很有意思

a,b = 2,3 

print(a,b)

#a = 3 

 b = 2  一行代码把a b 的值互换

(a,b)= (2,3)

print(a,b)   # 2,3

 

dic = {'key':'value','name':'yy','hobby':'heheh'}
for x,y in dic.items():
print(x,y)

#hobby heheh
name yy
key value

 

---恢复内容结束---

目录
相关文章
|
存储 传感器 安全
「Arm Arch」 初识 Arm(下)
「Arm Arch」 初识 Arm(下)
1088 0
|
6月前
|
测试技术 Go 数据库
Go语言测试与调试:单元测试与基准测试
本内容来自《Go语言实战指南》,详细讲解了Go语言的测试与调试,涵盖单元测试、基准测试、覆盖率分析及性能优化技巧,适用于实际项目开发。
|
11月前
|
机器学习/深度学习 运维 监控
利用深度学习进行系统健康监控:智能运维的新纪元
利用深度学习进行系统健康监控:智能运维的新纪元
351 30
|
10月前
|
机器学习/深度学习 算法
《动量法:梯度下降算法的加速引擎》
动量法(Momentum)改进了梯度下降算法收敛慢、易震荡和陷入局部最优等问题。通过引入历史梯度信息,动量法加速了参数更新,使模型在平坦区域也能快速收敛。它平滑了更新方向,减少了高曲率区域的震荡,增强了逃离局部最优的能力。此外,动量法提高了优化效率,减少了迭代次数,并可与其他优化算法结合,进一步提升训练效果。总之,动量法显著改善了梯度下降的性能,成为深度学习中不可或缺的优化技术。
296 2
|
编译器 C语言
【C语言】宏定义详解
在C语言中,宏定义是一种强大的预处理器功能,用于在编译之前对代码进行替换和条件编译。宏定义通过预处理器指令进行定义和使用,能够使代码更加灵活和可维护。本文将对C语言中的宏定义进行全面的讲解,包括各种相关的预处理器指令及其用法。
636 7
|
敏捷开发 存储 数据可视化
无纸化办公用什么软件能够最快提高工作效率!
无纸化办公(Paperless Office)是现代办公的重要趋势,旨在减少纸张使用,保护环境,提高效率,降低成本。通过电子文件管理,无纸化办公实现了快速查找、即时共享和远程协作,大幅提升了工作效率。文章推荐了五款高效无纸化办公软件:板栗看板、Jira、Wrike、Basecamp 和 Monday.com,这些工具在任务管理、项目协作和数据统计等方面表现出色,助力企业实现无纸化转型。
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
196 1
|
存储 关系型数据库 MySQL
再探PolarDB —— PolarDB MySQL 四大场景下的全方位评测
本文全面评测了阿里云PolarDB MySQL在四大关键场景下的表现:Serverless极致弹性、列存索引(IMCI)、弹性并行查询(ePQ)以及无感秒切高可用。通过官方提供的免费体验资源,我们深入了解了PolarDB MySQL的核心能力和性能。Serverless极致弹性列存索引(IMCI弹性并行查询(ePQ)无感秒切高可用此外,文章还介绍了PolarDB MySQL在数据备份和HTAP(混合事务/分析处理)场景下的优势,包括灵活的备份策略、高效的全量和库表恢复方式,以及通过IMCI支持的HTAP能力。这些特性共同构成了PolarDB MySQL作为一款先进的云数据库服务的强大竞争力。
|
计算机视觉
【图像处理】基于灰度矩的亚像素边缘检测方法理论及MATLAB实现
基于灰度矩的亚像素边缘检测方法,包括理论基础和MATLAB实现,通过计算图像的灰度矩来精确定位边缘位置,并提供了详细的MATLAB代码和实验结果图。
376 6
linux中 grep过滤查找 及 管道 ”|” 的使用
linux中 grep过滤查找 及 管道 ”|” 的使用