数据容器-dict以及总结-Python

news2024/9/22 21:26:53

师从黑马程序员

字典的定义

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

#定义字典
my_dict1={"王力宏":99,"周杰伦":88,"林俊杰":77}
#定义空字典
my_dict2={}
my_dict3=dict()
print(f"字典1的内容是:{my_dict1},类型:{type(my_dict1)}")
print(f"字典2的内容是:{my_dict2},类型:{type(my_dict2)}")
print(f"字典2的内容是:{my_dict3},类型:{type(my_dict3)}")
#定义重复Key的字典
my_dict1={"周杰伦":99,"周杰伦":88,"林俊杰":77}
print(f"字典1的内容是:{my_dict1},类型:{type(my_dict1)}")

注:字典同集合一样,不可以使用下标索引

但是字典可以通过Key值来取得对应的Value

my_dict1={"王力宏":99,"周杰伦":88,"林俊杰":77}
score=my_dict1["王力宏"]
print(f"王力宏的考试分数为:{score}")

 字典嵌套

字典的Key和Value可以是任意数据类型(Key不可为字典),即字典可以嵌套

stu_score_dict={
    "王力宏":{
        "语文":77,
        "数学":66,
        "英语":33
    },"周杰伦":{
        "语文":88,
        "数学":86,
        "英语":55
    },"林俊杰":{
        "语文":99,
        "数学":96,
        "英语":66
    }
}
print(f"学生的考试信息是:{stu_score_dict}")

score=stu_score_dict["周杰伦"]["语文"]
print(f"周杰伦的语文分数:{score}")

字典的常用操作

新增元素

更新元素

my_dict={"周杰伦":99,"林俊杰":88,"张学友":77}
#新增元素
my_dict["张信哲"]=66
print(f"字典新增元素之后,结果:{my_dict}")
#更新元素
my_dict["周杰伦"]=33
print(f"字典在更新元素之后,结果是:{my_dict}")

删除元素

清空字典

#删除元素
score=my_dict.pop("周杰伦")
print(f"字典中被移除了一个元素,结果:{my_dict},周杰伦的考试分数是:{score}")
#清空元素 clear
my_dict.clear()
print(f"字典被清空了,内容是:{my_dict}")

获取全部的Key

my_dict={"周杰伦":99,"林俊杰":88,"张学友":77}
keys=my_dict.keys()
print(f"字典中全部的Key为:{keys}")
#遍历字典
#方式一:通过获取到全部的Key来完成遍历
for key in keys:
    print(f"字典的key是:{key}")
    print(f"字典的value是:{my_dict[key]}")

#方式二:直接对字典进行for循环,每一次循环都是直接得到key
for key in my_dict:
    print(f"2字典的key是:{key}")
    print(f"2字典的value是:{my_dict[key]}")

统计字典内的元素数量

my_dict={"周杰伦":99,"林俊杰":88,"张学友":77}
num=len(my_dict)
print(f"字典中的元素数量有:{num}")

 总结

综合案例:

empl_inf = {
    "王力宏": {
        "部门": "科技部",
        "工资": 3000,
        "级别": 1
    },
    "周杰伦": {
        "部门": "市场部",
        "工资": 5000,
        "级别": 1
    },
    "林俊杰": {
        "部门": "市场部",
        "工资": 7000,
        "级别": 3
    },
    "张学友": {
        "部门": "市场部",
        "工资": 4000,
        "级别": 1
    },
    "刘德华": {
        "部门": "市场部",
        "工资": 6000,
        "级别": 2
    }
}
print(f"全体员工信息如下:{empl_inf}")
# 遍历字典并更新符合条件的员工信息
for name in empl_inf:
    if empl_inf[name]["级别"]==1:
        employee_empl_inf=empl_inf[name]
        employee_empl_inf["级别"]+=1
        employee_empl_inf["工资"]+=1000
        empl_inf[name]=employee_empl_inf

# 输出更新后的员工信息
print(f"全体员工更新后信息如下:{empl_inf}")

数据容器特点对比

数据容器的通用操作

容器的类型转换

容器通用排序功能

my_list=[3,1,2,5,4]
my_tuple=(3,1,2,5,4)
my_str="bdcefga"
my_set={3,1,2,5,4}
my_dict={"key3":1,"key":2,"key2":3,"key5":4,"key4":5}

print(f"容器对象排序的结果是:{sorted(my_list)}")#从小到大排序
print(f"容器对象排序的结果是:{sorted(my_tuple)}")
print(f"容器对象排序的结果是:{sorted(my_str)}")
print(f"容器对象排序的结果是:{sorted(my_set)}")
print(f"容器对象排序的结果是:{sorted(my_dict)}")
#排序的结果是列表

print(f"容器对象排序的结果是:{sorted(my_list,reverse=True)}")#从大到小排序
print(f"容器对象排序的结果是:{sorted(my_tuple,reverse=True)}")
print(f"容器对象排序的结果是:{sorted(my_str,reverse=True)}")
print(f"容器对象排序的结果是:{sorted(my_set,reverse=True)}")
print(f"容器对象排序的结果是:{sorted(my_dict,reverse=True)}")

总结

若有侵权,请联系作者

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

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

相关文章

RoDLA: Benchmarking the Robustness of Document Layout Analysis Models

RoDLA: Benchmarking the Robustness of Document Layout Analysis Models 相关链接:arxiv 关键字:Document Layout Analysis、Robustness Benchmarking、Perturbation Taxonomy、Mean Perturbation Effect、Mean Robustness Degradation 摘要 在现实世…

java反编译luyten使用,以及中文乱码,如何解决

第一步:打开软件,点击file,可以选择.class文件,也可以选择jar包 2.点击save保存.java文件 3.解决中文乱码问题,设置下面两个参数,中文乱码解决 下载地址:https://github.com/deathmarine/Luyten…

MySQL进阶-----索引的结构与分类

目录 前言 一、认识索引 二、索引结构 1.概述 2. 二叉树 3 .B-Tree 4.BTree 5.Hash 三、索引的分类 1 .索引分类 2 .聚集索引&二级索引 前言 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维…

基于Spring Boot的云上水果超市的设计与实现

摘 要 伴随着我国社会的发展,人民生活质量日益提高。于是对云上水果超市进行规范而严格是十分有必要的,所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套云上水果超市,帮助商家进行…

golang+vue微服务电商系统

golangvue微服务电商系统 文章目录 golangvue微服务电商系统一、项目前置准备二、项目简介三、代码GItee地址 golang、vue redis、mysql、gin、nacos、es、kibana、jwt 一、项目前置准备 环境的搭建 官方go开发工程师参考地址:https://blog.csdn.net/qq23001186/cat…

MySQL数据库高阶语句①

目录 一.按关键字排序 1.单字段排序 (1)按分数排序 (2)结合where进行条件筛选 2.多字段排序 (1)查询学生信息先按兴趣id升序排序,再按id升序排序 (2)查询信息按兴…

python 中判断文件、目录是否存在的方法

判断目录是否存在并创建目录 一、实现上传文件功能二、判断目录是否存在的办法2.1、使用os模块2.1.1、判断目录是否存在2.1.2、os.makedirs():递归创建目录 2.2、使用pathlib模块2.2.1、path.exist()判断目录是否存在2.2.1、path.mkdir():创建目录 2.3、…

【优质】「web开发网页制作」html+css+js导盲犬网页制作(5页面)

导盲犬网页目录 涉及知识写在前面一、网页主题二、网页效果Page1、首页Page2、关于导盲犬Page3、阶段Page4、宣传视频Page5、登录 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 四、网页源码HtmlCSSJS 五、源码获取5.1 获取源码包 作者寄语 涉及知识 导盲犬介绍…

C++ primer 第十五章

1.OPP:概述 面向对象程序设计的核心思想是数据抽象、继承和动态绑定。 通过继承联系在一起的类构成一种层次关系,在层次关系的根部的是基类,基类下面的类是派生类 基类负责定义在层次关系中所有类共同拥有的成员,而每个派生类定义各自特有…

RAG笔记:常见问题以及解决方法

1 内容缺失 知识库中缺少必要的上下文信息。当知识库没有包含正确答案时,RAG 系统可能会给出一个貌似合理但实际上错误的回答,而不是明确表示它不知道答案。 1.1 解决方法 1.1.1 设置阈值 在回答问题前先设定一个质量标准。如果召回内容达不到标准或…

javaWeb项目-快捷酒店信息管理系统功能介绍

开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 项目关键技术 1、JSP技术 JSP(Java…

【数据结构与算法】直接插入排序和希尔排序

引言 进入了初阶数据结构的一个新的主题——排序。所谓排序,就是一串记录,按照其中的某几个或某些关键字的大小(一定的规则),递增或递减排列起来的操作。 排序的稳定性:在一定的规则下,两个值…

k8s入门到实战(四)—— k8s核心概念以及基本操作命令详细介绍

k8s 核心概念及操作命令 namespace(命名空间,简称 ns) k8s 资源创建的两种方式:使用命令行创建、使用 yaml 文件创建 什么是 ns 在 k8s 中,ns 是一种用于对集群资源进行逻辑分组和隔离的机制。它允许将 k8s 集群划…

鸿蒙开发实战:快速上手【万能卡片】

(一)练习准备 本案例使用HUAWEI DevEco Studio 3.0.0.800,API4-API7都可以体验,由于IDE版本与API不断升级与兼容性等问题,大家练习时可能会遇到一些细节上的差异,整体流程是一致的。 (二&…

实现Redis缓存预热的技巧与方法

🍎个人博客:个人主页 🏆个人专栏:Linux ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 什么是缓存预热? 缓存预热的作用 如何实现Redis缓存预热? 结语 我的其他博客 前言 在实际的软件开发中…

Retrieval Augmented Thoughts(RAT):检索增强思维,实现长视野生成中的上下文感知推理

论文地址:https://arxiv.org/pdf/2403.05313.pdf 原文地址:rat-retrieval-augmented-thoughts Github:Implementation of RAT 2024 年 3 月 14 日 介绍 让我首先从一些一般性观察开始...... 在生成式人工智能应用程序中实现效率与生成响应…

一文看懂,如何精细化地进行跨域文件管控

随着企业规模的扩大和分支机构的增多,会出现不同地理位置、组织机构或网络安全域之间进行文件交换的场景。 像很多金融机构在全国或全球范围内会设立不同的分支机构和办事处,因此会存在不同组织机构之间的数据流转,即跨域文件传输。跨域文件传…

Unity Mobile Notifications推送问题

1.在部分机型点击通知弹窗进不去游戏 把这里改成自己的Activity 2.推送的时候没有横幅跟icon红点 主要是第一句话 注册的时候选项可以选择 defaultNotificationChannel new AndroidNotificationChannel(“default_channel”, “Default Channel”, “For Generic notifica…

Java学习笔记(21)

IO流 字节流 字符流 纯文本文件 Fileoutputstream 注意点 如果不释放资源,java会一直占用该文件,外部无法删除掉该文件 写数据 换行写 用字符串的getBytes()得到字符数组 \r\n 续写 Fileinputstream Read 一次只读一个字符&am…

深入解析ECC(椭圆曲线密码学)加解密算法

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 本文将详细介绍ECC(椭圆曲线密码学)加解密算法的原理、特点及应用。ECC作为一种新型的公钥密码体制&#…