python 字典Dict

news2024/11/20 0:31:35

一种序列类型,使用键-值(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数据类型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1195987.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis之主从复制

文章目录 一、什么是Redis主从复制?1.作用2.配置主从复制的原因3.环境配置 二、一主二从三、复制原理四、链路总结 一、什么是Redis主从复制? 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(ma…

C++ 编译与链接过程

案例讲解 有 main.cpp 和 add.cpp 2个文件&#xff0c;add.cpp中实现add_func函数&#xff0c;main.cpp文件中需要使用add_func函数。 demo&#xff1a; // main.cpp文件 #include <iostream>int add_func(int a, int b);int main() {int a 10;int b 10;int ret ad…

想学好Python,一定不能错过这些项目!整整70个,附带源码课件

在程序员的求职中&#xff0c;「项目经历」往往是最重要的一环&#xff0c;它能最直观地体现你的编程能力。对于在校生来说&#xff0c;一个好的「项目经历」甚至可以等同于工作经验。可以说&#xff0c;把项目经历写好了&#xff0c;求职就通过了一半。&#xff08;文末有教程…

内存取证分析

内存取证会临时存储一些有价值的信息 查看内存进程的信息等等&#xff0c;对溯源这种事情有帮助。不过要用到专门的工具获取信息 运行exe文件&#xff0c;输入y将一个系统的镜像完整的下载下来&#xff0c; 这就是保存下来的文件。 视频上别的工具搞不来&#xff0c;要不就是…

53. 最大子序和 392.判断子序列 115.不同的子序列 583. 两个字符串的删除操作 72. 编辑距离

53. 最大子序和 题目&#xff1a; 给定一个整数数组&#xff0c;求最大连续子序列和。&#xff08;至少包含一个元素&#xff09; 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大&#xff0c;为 6意为为了连续最大负数都可以包含进来。…

Vatee万腾数字化愿景:Vatee科技决策力引领数字化创新

在当今数字化时代&#xff0c;科技创新变得愈发不可或缺。创新是企业和个人在竞争激烈的市场中脱颖而出的关键要素&#xff0c;也是推动社会发展的引擎。Vatee万腾作为一家致力于数字化创新的公司&#xff0c;已经崭露头角&#xff0c;以其前沿的数字化策略和科技决策力&#x…

在家用Python搞副业,也能月入10000+

下班副业实现经济自由的时候&#xff0c;你还在床上躺着&#xff0c;天天摆烂吗&#xff1f;这样的生活真的是你想要的吗&#xff1f; 疫情在家接一些Python相关的小单子&#xff0c;既能给自己练手&#xff0c;还能赚是真香 从零基础开始真的一台电脑和一部手机就可以✅ 一次…

Oracle迁移(RAC变单机模式)

1.升级内核 systemctl stop firewalld systemctl disable firewalldrpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm yum --enablerepo"elrepo-kernel" list --showduplic…

【C++】STL的基本用法

目录结构 1. STL概念 1.2 常见容器 1.3 六大组件 2. STL容器之vector 1. vector 2. 基本用法示例 3. STL容器之map 1. map 2. 基本用法示例 1. STL概念 C中的STL是指标准模板库的缩写。STL提供了一组通用的模板类和函数&#xff0c;用于实现常见的数据结构和算法&…

Clickhouse学习笔记(3)—— Clickhouse表引擎

前言&#xff1a; 有关Clickhouse的前置知识详见&#xff1a; 1.ClickHouse的安装启动_clickhouse后台启动_THE WHY的博客-CSDN博客 2.ClickHouse目录结构_clickhouse 目录结构-CSDN博客 Cickhouse创建表时必须指定表引擎 表引擎&#xff08;即表的类型&#xff09;决定了&…

【MATLAB源码-第75期】基于模拟退火算法(SA)的栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 模拟退火算法是一种启发式优化算法&#xff0c;通常用于解决组合优化问题&#xff0c;例如旅行商问题和图着色问题。它模拟了固体材料在退火过程中逐渐冷却达到稳定状态的行为&#xff0c;以寻找问题的全局最优解。 以下是模…

【MATLAB源码-第76期】基于模拟退火算法(SA)的无人机三维地图路径规划,输出最短路径和适应度曲线

操作环境&#xff1a; MATLAB 2022a 1、算法描述 模拟退火算法是一种启发式优化算法&#xff0c;通常用于解决组合优化问题&#xff0c;例如旅行商问题和图着色问题。它模拟了固体材料在退火过程中逐渐冷却达到稳定状态的行为&#xff0c;以寻找问题的全局最优解。 以下是模…

Unity 场景优化策略

Unity 场景优化策略 GPU instancing 使用GPU Instancing可以将多个网格相同、材质相同、材质属性可以不同的物体合并为一个批次&#xff0c;从而减少Draw Calls的次数。这可以提高性能和渲染效率。 GPU instancing可用于绘制在场景中多次出现的几何体&#xff0c;例如树木或…

软件工程的舞台上,《人月神话》的美学纷飞

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 今天给大家分享一本书&#xff1a;《人月神话》——软件工程的经典之作。 《人月神话》是一本具有深远影响力的软件工程著作&#xff0c;无论是软件开发者、管理者还是学习软件工程的人士&#xff0c;都能从中获得宝贵的启…

电脑想要微信多开——打开多个微信的必胜法宝!

一个不知名大学生&#xff0c;江湖人称菜狗 original author: Jacky Li Email : 3435673055qq.com Time of completion&#xff1a;2023.11.11 Last edited: 2023.11.11 导读&#xff1a;在生活当中经常遇到工作和生活相撞的事情&#xff0c;导致在处理私人的事情同时不得不处理…

redis学习指南--概览篇

redis怎么学 官方学习网站&#xff1a; redis.cn 1、整体了解redis redis是一个内存数据库、kv数据库&#xff0c;数据结构数据库&#xff0c;redis中数据都是存储在redis中&#xff0c;可以通过key查找value&#xff0c;value可以有多种数据结构&#xff0c;有&#xff1a;…

牛客、赛码网OJ调试(全)

现在无论开发还是测试&#xff0c;面试的时候都需要考察代码能力。 从测试的职业发展来看&#xff0c;现在市场上对于纯功能测试的需求很少&#xff0c;招聘方均要求面试者一方面具备测试基础能力&#xff0c;也要求有点代码能力。 对于测试来说&#xff0c;除了测试开发&#…

C语言计算字符串中数字字符的个数

文章目录 1-9题前言例题10例题11答案例题10答案答案1答案2 例题11答案 1-9题 C语言基础例题1-3题-指针篇 C语言基础例题4-5题-二维数组篇 C语言基础例题6-7题-结构体篇 C语言基础例题8-9题-大作业篇 前言 下列题目需要学习字符串、指针后才可练习。 例题10 请编写一个程序…

【Java】I/O流—转换流、序列化流的初学者指南及RandomAccessFile类

&#x1f33a;个人主页&#xff1a;Dawn黎明开始 &#x1f380;系列专栏&#xff1a;Java ⭐每日一句&#xff1a;我不在意你曾堕落&#xff0c;我只在意你是否会崛起 &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️ 文章目录…

【算法与设计模式】

一、数据结构与算法 1、算法性能评估 时间复杂度、空间复杂度 2、数据结构 数组与列表 队列 堆栈 链表 二叉树 多叉树 递归算法 二、设计模式 1、单例 &#xff08;1&#xff09;GIL&#xff1a;线程互斥锁。保证同一时刻只有一个线程在进行。 &#xff08;2&#xff09…