当前位置: 首页 > news >正文

python 字典Dict

一种序列类型,使用键-值(key-value)存储,具有极快的查找速度。

目录

key的特性

创建字典

元素的访问

Get获取

修改

是否存在key

删除

删除单个

删除全部

遍历

遍历key与值

只遍历值

遍历key,value方法2

结合enumerate遍历

和list比较

总结


key的特性

1.字典中的key必须唯一

2.key必须是不可变对象

3.字符串、整数等都是不可变的,可以作为key

4.list是可变的,不能作为key

注意:字典是无序的,存储先后顺序不等于最终字典顺序。

创建字典

dict1 = {'hanmei': 85, 'lilei': 80}

元素的访问

获取:字典名[key]

例:

print(dict1['hanmei']) # 85
print(dict1['lilei'])  # 80

当没有的时候,如果这时去获取,就会报错。

print(dict1['zhangsan'])

如下:

Get获取

使用.get方式获取,可设置默认值在获取不到时返回。

代码如下:

res = dict1.get('zhangsan')
if res == None:print('没有')
else:print('有')

效果:

没有

修改

因为一个key对应一个value,所以再次对同一个key的value进行赋值,

就会修改原有key的value值。

代码如下:

dict1['zhangsan'] = 99
dict1['lilei'] = 88
print(dict1) # {'hanmei': 85, 'lilei': 88, 'zhangsan': 99}

是否存在key

使用in来判断相应key是否存在字典中。

代码如下:

dict2 = {'hanmei': 85, 'lilei': 80, 'zhangsan': 99, 'lisi': 88}
print('zhangsan' in dict2) # True

删除

删除单个

删除可使用.pop(key)方式删除相应key-value

代码如下:

# 韩梅转学了
dict1.pop('hanmei')
print(dict1)

效果:

{'hanmei': 85, 'lilei': 88, 'zhangsan': 99}
{'lilei': 88, 'zhangsan': 99}

删除全部

使用.clear()方法,来删除字典所有的键值对。

代码如下:

dict2 = {'hanmei': 85, 'lilei': 80, 'zhangsan': 99, 'lisi': 88}
dict2.clear()
print(dict2) # {}

当删除所有键值对后,打印出来的就是空字典。

遍历

遍历key与值

dict2 = {'hanmei': 85, 'lilei': 80, 'zhangsan': 99, 'lisi': 88}
for key in dict2:print(key, dict2[key])

效果:

hanmei 85
lilei 80
zhangsan 99
lisi 88

只遍历值

使用.values()方式获取字典所有值,为一个列表类型。

代码如下:

print(dict2.values())for value in dict2.values():print(value)

效果:

dict_values([85, 80, 99, 88])
85
80
99
88

遍历key,value方法2

可通过字典的items()方法获取中的所有键值对,用来遍历。

代码如下:

for k, v in dict2.items():print(k, '=>', v)

效果:

hanmei => 85
lilei => 80
zhangsan => 99
lisi => 88

结合enumerate遍历

还有一种遍历key和value的方式。

for i, v in enumerate(dict2):print(i, '=>', v)

效果:

0 => hanmei
1 => lilei
2 => zhangsan
3 => lisi

和list比较

1.查找和插入的速度极快,不会随着key-value的增加而变慢。

2.需要占用大量的内存,内存浪费多。

总结

应用场景比较多,可以在复杂场景中使用,使用起来也比较灵活,类似与php的array数据类型。

相关文章:

  • 蓝桥杯每日一题203.11.7
  • 以 Kubernetes 原生方式实现多集群告警
  • ansible问题排查
  • 浙江大学漏洞报送证书
  • 代码提交记录时候,一般时候哪些单词作为前缀并代表什么含义
  • 数字滤波器分析---相位响应
  • Linux应用开发基础知识——Framebuffer 应用编程(四)
  • PHP的curl会话
  • 【PostgreSql本地备份为dump文件与恢复】使用脚本一键备份为dump文件
  • SpringBoot 使用WebSocket打造在线聊天室
  • Ubuntu配置Yolov8环境并训练自己的数据集
  • Power Automate-创建审批流
  • GetPrivateProfileSection使用
  • IP-guard WebServer RCE漏洞复现
  • JavaEE初阶学习:Linux 基本使用和 web 程序部署
  • 《Java编程思想》读书笔记-对象导论
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • Apache的基本使用
  • Asm.js的简单介绍
  • centos安装java运行环境jdk+tomcat
  • IOS评论框不贴底(ios12新bug)
  • JavaScript类型识别
  • java中的hashCode
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • MySQL数据库运维之数据恢复
  • PHP的类修饰符与访问修饰符
  • uni-app项目数字滚动
  • vuex 笔记整理
  • vue数据传递--我有特殊的实现技巧
  • yii2权限控制rbac之rule详细讲解
  • 当SetTimeout遇到了字符串
  • 电商搜索引擎的架构设计和性能优化
  • 分享几个不错的工具
  • 离散点最小(凸)包围边界查找
  • 力扣(LeetCode)22
  • 前端路由实现-history
  • 网络应用优化——时延与带宽
  • 学习JavaScript数据结构与算法 — 树
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 云大使推广中的常见热门问题
  • linux 淘宝开源监控工具tsar
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​VRRP 虚拟路由冗余协议(华为)
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (solr系列:一)使用tomcat部署solr服务
  • (九)信息融合方式简介
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (一) springboot详细介绍
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)原始图像数据和PDF中的图像数据
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .chm格式文件如何阅读
  • .net core使用ef 6