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

python中的字典详解

目录

一.思考

二.字典定义

 注意

三.字典数据的获取

 注意

 字典的嵌套

 四.字典常用操作

1.新增、更新元素

2.删除元素

3.清空字典

4.获取全部Key

5.利用Key遍历字典

 五.字典总结

六.字典实例


 

一.思考

为什么需要字典?

 生活中的字典我们可以根据【字】来找到对应的【含义】

python中的字典也是同理,不过叫法不同,在python中就是[Key]去找对应的[Value]

 比如说,我这里有一份名单,记录的是姓名和成绩:
 

姓名        

成绩
张三        76
李四87
王五90

现在需要将其通过Python录入至程序中,并可以通过学生姓名检索学生的成绩。

这个时候,用字典最适合

{
    "张三":76,
    "李四":87,
    "王五":90
}

这样就可以通过Key (姓名),取到对应的Value(成绩)

二.字典定义

字典的定义,同样使用{  },不过存储的元素是一个个的:键值对,如下语法:

#定义字典字面量
{key:value,key:value,key:value,.....,key:value}
my_dict = {key:value,key:value,key:value,.....,key:value}
#定义空字典两种方法
my_dict = {}
my_dict = dict()
#定义字典字面量
{"张三":76,"李四":87,"王五":90}
my_dict = {"张三":76,"李四":87,"王五":90}
#定义空字典两种方法
my_dict2 = {}
my_dict3 = dict()
print(f"字典1的内容是{my_dict},类型为{type(my_dict)}")
print(f"字典1的内容是{my_dict2},类型为{type(my_dict2)}")
print(f"字典1的内容是{my_dict3},类型为{type(my_dict3)}")

运行结果是

 注意

如果字典中的关键字重复,那么只会输出最后一次结果,如图

三.字典数据的获取

字典同集合一样,不可以使用下标索引
但是字典可以通过Key值来取得对应的Value

 注意

只能由Key找到对应的Value

 字典的嵌套

字典的Key和value可以是任意数据类型( Key不可为字典)
那么,就表明,字典是可以嵌套的

需求如下:记录学生各科的考试信息
 

姓名语文数学英语
张三875687
李四678698
王五776860

代码如下

my_dict = {
    "张三":{
        "语文":87,
        "数学":56,
        "英语":87
    },
    "李四":{
        "语文": 67,
        "数学": 86,
        "英语": 98
    },
    "王五":{
        "语文": 77,
        "数学": 68,
        "英语": 60
    }

}
print(f'王五的信息是:{my_dict["王五"]}')
print(f"所有信息是:{my_dict}")
print(my_dict["张三"]["语文"])
print(my_dict["张三"]["数学"])
print(my_dict["张三"]["英语"])
Lisi_yingyu = my_dict["李四"]["英语"]
print(f"李四的英语是:{Lisi_yingyu}")

结果是

 四.字典常用操作

  • 新增元素
  • 更新元素
  • 删除元素
  • 清空字典
  • 获取全部Key
  • 利用Key遍历字典

1.新增、更新元素

语法:字典[Key]= Value,结果:字典被修改,元素被更新

my_dict = {"张三":76,
           "李四":87,
           "王五":90
}
my_dict["赵四"]=75
print(f"添加赵四之后为:{my_dict}")
my_dict["张三"]=98
print(f"更新张三之后为:{my_dict}")

结果是

2.删除元素

语法:字典.pop(Key),结果:获得指定Key的value,同时字典被修改,指定Key的数据被删除

 

3.清空字典

语法:字典.clear(),结果:字典被修改,元素被清空

4.获取全部Key

语法:字典.keys()
结果:得到字典中的全部key 

5.利用Key遍历字典

my_dict = {"张三":76,
           "李四":87,
           "王五":90
}
print(f"字典中的所有key为:{my_dict.keys()}")
for name in my_dict.keys():
    print(f"字典的key是:{name},其value是:{my_dict[name]}")

 结果是

 

 五.字典总结

  1. 可以容纳多个数据
  2. 可以容纳不同类型的数据
  3. 每一份数据是KeyValue键值对
  4. 可以通过Key获取到value,Key不可重复(重复会覆盖)
  5. 不支持下标索引
  6. 可以修改(增加或删除更新元素等)
  7. 支持for循环,不支持while循环

六.字典实例

有如下员工信息,请使用字典完成数据的记录。
并通过for循环,对所有级别为1级的员工,级别上升1级,薪水增加1000元

姓名部门工资级别
张三科技部30001
李四市场部50002
王五市场部70003
赵四科技部40001
赵六市场部60002

代码

info_dict = {
    "张三":{
        "部门":"科技部",
        "工资":3000,
        "级别":1
    },
    "李四":{
        "部门":"市场部",
        "工资":5000,
        "级别":2
    },
    "王五": {
        "部门": "市场部",
        "工资": 7000,
        "级别": 3
    },
    "赵四": {
        "部门": "科技部",
        "工资": 4000,
        "级别": 1
    },
    "赵六": {
        "部门": "市场部",
        "工资": 6000,
        "级别": 2
    }
}
print(f"改变之前的信息为:{info_dict}")
for name in info_dict.keys():
    if info_dict[name]["级别"]==1:
        info_dict[name]["级别"]+=1
        info_dict[name]["工资"]+=1000
print(f"改变之后的信息为:{info_dict}")

结果为

 

 

相关文章:

  • C++11标准模板(STL)- 算法(std::minmax)
  • STM32F4 | PWM输出实验
  • Nginx快速入门笔记
  • Elasticsearch:基于文件的用户认证
  • 【C】带你复习有趣的函数
  • .NET Framework杂记
  • 4线SPI驱动OLED常规操作
  • ESP32 OTA
  • Linux C编程一站式学习笔记2
  • RK3568平台开发系列讲解(摄像头篇)使用 Camera 的步骤
  • Kerberos的概述和认证原理
  • RocketMQ的TAG过滤和SQL过滤机制
  • 2023年电气,电子与信息工程国际会议(ISEEIE 2023)
  • 【前端开发学习】4.JavaScript
  • 【大数据技术Hadoop+Spark】HBase分布式数据库架构、特点、数据存储方式、寻址机制详解(图文解释)
  • SegmentFault for Android 3.0 发布
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • C++入门教程(10):for 语句
  • C语言笔记(第一章:C语言编程)
  • gitlab-ci配置详解(一)
  • Git初体验
  • IDEA 插件开发入门教程
  • leetcode388. Longest Absolute File Path
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • PAT A1050
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Solarized Scheme
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 我有几个粽子,和一个故事
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • #大学#套接字
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (9)STL算法之逆转旋转
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (差分)胡桃爱原石
  • (二)Linux——Linux常用指令
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (三)uboot源码分析
  • (未解决)macOS matplotlib 中文是方框
  • (一)基于IDEA的JAVA基础10
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • ***利用Ms05002溢出找“肉鸡
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .net 怎么循环得到数组里的值_关于js数组
  • .Net中wcf服务生成及调用