Python数据容器(字典)

news2025/1/17 21:43:10

字典

    • 1.字典的定义
    • 2.字典数据的获取
    • 3.字典的嵌套
    • 4.嵌套字典的内容获取
    • 5.字典的常用操作
    • 6.常用操作总结
    • 7.遍历字典
    • 8.练习

1.字典的定义

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

# 定义字典字面量
{key:value,key:value,...,key:value}
# 定义字面量
my_dict = {key:value,key:value,...,key:value}
# 定义空字典
my_dict = {}
my_dict = dict{}
# 学生成绩
stu_score = {"王力宏":99,"周杰伦":88,"林俊杰":77}
print(stu_score)  # 结果 {'王力宏': 99, '周杰伦': 88, '林俊杰': 77}

2.字典数据的获取

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

# 学生成绩
stu_score = {"王力宏":99,"周杰伦":88,"林俊杰":77}
print(stu_score["王力宏"]) # 结果 99
print(stu_score["周杰伦"]) # 结果 88
print(stu_score["林俊杰"]) # 结果 77

3.字典的嵌套

姓名语文数学英语
王力宏776633
周杰伦888655
林俊杰999666
# 代码
stu_score = {"王力宏":{"语文":77,"数学":66,"英语":33},"周杰伦":{"语文":88,"数学":86,"英语":55},"林俊杰":{"语文":99,"数学":96,"英语":66}}
# 优化代码
stu_score = {
  "王力宏":{"语文":77,"数学":66,"英语":33},
  "周杰伦":{"语文":88,"数学":86,"英语":55},
  "林俊杰":{"语文":99,"数学":96,"英语":66}
}

4.嵌套字典的内容获取

stu_score = {
  "王力宏":{"语文":77,"数学":66,"英语":33},
  "周杰伦":{"语文":88,"数学":86,"英语":55},
  "林俊杰":{"语文":99,"数学":96,"英语":66}
}
print(stu_score["王力宏"])  # 结果 {'语文': 77, '数学': 66, '英语': 33}
print(stu_score["王力宏"]["语文"])  # 结果 77
print(stu_score["周杰伦"]["数学"])  # 结果 86

5.字典的常用操作

  • 新增元素
    • 语法:字典[Key] = Value
    • 结果:字典被修改,新增了元素
stu_score = {
    "王力宏":77,
    "周杰伦":88,
    "林俊杰":99
}
# 新增,张学友的考试成绩
stu_score["张学友"]=66
print(stu_score)  # 结果 {'王力宏': 77, '周杰伦': 88, '林俊杰': 99, '张学友': 66}
  • 更新元素
    • 语法:字典[Key] = Value
    • 结果:字典被修改,元素被更新
    • 注意:字典Key不可以重复,所以是对已存在Key执行的操作,更改的是value的值
stu_score = {
    "王力宏":77,
    "周杰伦":88,
    "林俊杰":99
}
# 更新,王力宏的考试成绩
stu_score["王力宏"]=100
print(stu_score) # 结果 {'王力宏': 100, '周杰伦': 88, '林俊杰': 99}
  • 删除元素
    • 语法:字典.pop(Key)
    • 结果:获得指定Key的Value,同时字典被修改,指定Key的数据被删除
stu_score = {
    "王力宏":77,
    "周杰伦":88,
    "林俊杰":99
}
value= stu_score.pop("王力宏")
print(value)  # 结果 77
print(stu_score) # 结果 {'周杰伦': 88, '林俊杰': 99}
  • 清空字典
    • 语法:字典.clear()
    • 结果:字典被修改,元素被清空
stu_score = {
    "王力宏":77,
    "周杰伦":88,
    "林俊杰":99
}
stu_score.clear()
print(stu_score) # 结果 {}
  • 获取全部的Key
    • 语法:字典.keys()
    • 结果:得到字典中全部的Key
stu_score = {
    "王力宏":77,
    "周杰伦":88,
    "林俊杰":99
}
keys = stu_score.keys()
print(keys) # 结果 dict_keys(['王力宏', '周杰伦', '林俊杰'])
  • 计算字典内的全部元素(键值对)数量
    • 语法:len(字典)
    • 结果:得到一个整数,表示字典元素(键值对)数量
stu_score = {
    "王力宏":77,
    "周杰伦":88,
    "林俊杰":99
}
print(len(stu_score)) #  结果 3

6.常用操作总结

编号操作说明
1字典[Key]获取指定Key对应的Value值
2字典[Key]=Value添加或更新键值对
3字典.pop(Key)取出Key对应的Value并在字典内删除此Key的键值对
4字典.clear()清空字典
5字典.keys()获取字典的全部Key,可用于for循环遍历字典
6len(字典)计算字典内元素数量

7.遍历字典

注意:字典不支持下标索引,不可以使用while循环

  • for循环遍历
stu_score = {
    "王力宏":77,
    "周杰伦":88,
    "林俊杰":99
}
keys = stu_score.keys()
for key in keys:
    print(f"学生{key}的分数是:{stu_score[key]}")
## 结果
学生王力宏的分数是:77
学生周杰伦的分数是:88
学生林俊杰的分数是:99

8.字典的特点

  • 可以容纳多个数据
  • 可以容纳多个不同类型的数据
  • 每一份数据都是KeyValue键值对
  • 可以通过Key获取到Value,Key不可以重复
  • 不支持下标索引
  • 可以修改(增加或删除更新元素)
  • 支持for循环

8.练习

在这里插入图片描述

# 定义字典
information = {
    "王力宏":{"部门":"科技部","工资":3000,"级别":1},
    "周杰伦":{"部门":"市场部","工资":5000,"级别":2},
    "林俊杰":{"部门":"市场部","工资":7000,"级别":3},
    "张学友":{"部门":"科技部","工资":4000,"级别":1},
    "刘德华":{"部门":"市场部","工资":6000,"级别":2}
}
print(f"全体员工当前信息如下{information}")
keys = information.keys()
# for循环遍历
for key in keys:
    if information[key]["级别"] == 1:
        # 升职加薪操作
        information[key]["级别"] += 1
        information[key]["工资"] += 1000
print(f"升职加薪操作之后,信息如下{information}")
## 输出
全体员工当前信息如下{'王力宏': {'部门': '科技部', '工资': 3000, '级别': 1}, '周杰伦': {'部门': '市场部', '工资': 5000, '级别': 2}, '林俊杰': {'部门': '市场部', '工资': 7000, '级别': 3}, '张学友': {'部门': '科技部', '工资': 4000, '级别': 1}, '刘德华': {'部门': '市场部', '工资': 6000, '级别': 2}}
升职加薪操作之后,信息如下{'王力宏': {'部门': '科技部', '工资': 4000, '级别': 2}, '周杰伦': {'部门': '市场部', '工资': 5000, '级别': 2}, '林俊杰': {'部门': '市场部', '工资': 7000, '级别': 3}, '张学友': {'部门': '科技部', '工资': 5000, '级别': 2}, '刘德华': {'部门': '市场部', '工资': 6000, '级别': 2}}

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

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

相关文章

小学生加减乘除闯关运算练习流量主微信小程序开发

小学生加减乘除闯关运算练习流量主微信小程序开发 经过本次更新,我们增加了新的功能和特性,以提升用户体验和运算练习的趣味性: 能量石与激励视频:用户可以通过观看激励视频来获取能量石,这些能量石可以用于解锁收费…

去掉 webstorm 白线

webstorm 编辑界面出现一条白线 ctrlshifta 打开设置窗口, 输入 “显示右边距” 英文版输入 “show right margin” 点击关闭即可

网络超时检测-11.9

应用场景 在网络通信中,很多操作会使得进程阻塞: TCP套接字中的recv/acceptUDP套接字中的recvfrom超时检测的必要性 避免进程在没有数据时无限制地阻塞实现某些特定协议要求,比如某些设备规定,发送请求数据后,如果多长…

nginx启动命令

普通启动 切换到nginx安装目录的sbin目录下,执行:./nginx 通过配置文件启动 ./nginx -c /usr/local/nginx/conf/nginx.conf /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 其中-c是指定配置文件,而且配置文件路径必须指定绝对路…

yolo如何画框、如何变换目标检测框的颜色和粗细、如何运行detect脚本

这段代码是一个使用YOLO模型进行目标检测的Python脚本。下面我将逐步解释脚本的主要部分,并提供一些关于超参数的使用方法。 1. 脚本结构 导入相关库设置配置参数加载YOLO模型运行目标检测处理检测结果显示或保存结果 2. 超参数说明 --weights: 指定YOLO模型的…

屏蔽机房与普通机房有什么不同?

屏蔽机房与普通机房在设计和功能上存在一些明显的区别。下面是一些区别的主要方面: 电磁屏蔽:屏蔽机房采用了电磁屏蔽材料来减少电磁波的干扰。屏蔽机房能够有效地将外部的电磁干扰隔离开来,确保机房内设备的安全运行。 物理安全:…

halcon里面显示红色三角或者黄色三角+感叹号的算子代表什么含义

有时候,在Halcon里面使用某些算子的时候,左侧有红色或者黄色三角感叹号的提示。 如下图: 可以把鼠标放到红色感叹号上面,发现提示: 有这些标志的算子代表是Halcon中不推荐使用,可以淘汰的算子,…

Bobo Python 学习笔记

安装 Bobo 可以通过通常的方式安装,包括使用setup.py install 命令。当然,您可以使用Easy Install、Buildout或pip。 安装bobo Collecting boboDownloading bobo-2.4.0.tar.gz (17 kB) Collecting WebObDownloading WebOb-1.8.7-py2.py3-none-any.whl…

Stable Diffusion (version x.x) 文生图模型实践指南

前言:本篇博客记录使用Stable Diffusion模型进行推断时借鉴的相关资料和操作流程。 相关博客: 超详细!DALL E 文生图模型实践指南 DALLE 2 文生图模型实践指南 目录 1. 环境搭建和预训练模型准备环境搭建预训练模型下载 2. 代码 1. 环境搭建…

python基础练习题库实验八

文章目录 前言题目1代码 题目2代码 题目3代码 总结 前言 🎈关于python小题库的这模块我已经两年半左右没有更新了,主要是在实习跟考研,目前已经上岸武汉某211计算机,目前重新学习这门课程,也做了一些新的题目 &#x…

部署LCM(Latent Consistency Models)实现快速出图

LCM(Latent Consistency Models)可以通过很少的迭代次数就可以生成高清晰度的图片,目前只可以使用一个模型Dreamshaper_v7,基于SD版本Dreamshaper微调而来的。 LCM模型下载: https://huggingface.co/SimianLuo/LCM_D…

使用flutter的Scaffold脚手架开发一个最简单的带tabbar的app模板

flutter自带的scaffold脚手架可以说还是挺好用的,集成了appBar,还有左侧抽屉,还有底部tabbar,可以说拿来就可以用了啊,所以我今天也体验了一下,做了一个最简单的demo,就当是学习记录了。 效果展…

后端接口错误总结

今天后端错误总结: 1.ConditionalOnExpression(“${spring.kafka.exclusive-group.enable:false}”) 这个标签负责加载Bean,因此这个位置必须打开,如果这个标签不打开就会报错 问题解决:这里的配置在application.yml文件中 kaf…

Spring Framework 简介与起源

Spring是用于企业Java应用程序开发的最流行的应用程序开发框架。全球数百万开发人员使用Spring Framework创建高性能、易于测试和可重用的代码。 Spring Framework是一个开源的Java平台。它最初由Rod Johnson编写,并于2003年6月在Apache 2.0许可下首次发布。 Spri…

laravel日期字段carbon 输出格式转换

/*** The attributes that should be cast.** var array*/ protected $casts [created_at > datetime:Y-m-d, ]; 滑动验证页面https://segmentfault.com/q/1010000043327049

PyQt中QFrame窗口中的组件不显示的原因

文章目录 问题代码(例)原因和解决方法 问题代码(例) from PyQt5.QtWidgets import * from PyQt5.QtGui import QFont, QIcon, QCursor, QPixmap import sysclass FrameToplevel(QFrame):def __init__(self, parentNone):super().…

Newman

近期在复习Postman的基础知识,在小破站上跟着百里老师系统复习了一遍,也做了一些笔记,希望可以给大家一点点启发。 一)如何安装Newman 1、下载并安装NodeJs 在官网下载NodeJs: Download | Node.js(官网的…

首周聚焦百度智能云千帆大模型平台使用,《大模型应用实践》实训营11月16日开讲!

百度智能云千帆大模型平台官方出品的《大模型应用实践》实训营本周正式上线!这是百度智能云推出的首个系列课程,课程内容满满干货! 11月16日本周四即将开课,首周由百度智能云千帆大模型平台产品经理以及百度智能云千帆资深用户知…

DM8数据守护集群安装部署_手动切换

一.安装前准备 1.1 硬件环境建议 数据守护集群安装部署前需要额外注意网络环境和磁盘 IO 配置情况,其他环境配置项建议请参考安装前准备工作。 1.1.1 网络环境 心跳网络对 mal 通讯系统的影响非常大,如果网络丢包或者延迟较大,则会严重影…

Linux C 进程间通信

进程间通信 概述进程间通信方式管道概述管道函数无名管道 pipe有名管道 makefifo删除有名管道 rmove 有名管道实现 双人无序聊天 例子 信号信号概述信号处理过程信号函数传送信号给指定的进程 kill注册信号 signal查询或设置信号处理方式 sigaction设置信号传送闹钟 alarm 有名…