python容器四之字典

news2024/12/23 9:12:22

文章目录

  • 1. 字典介绍
  • 2. 使用字典
  • 3. 字典的常见操作
    • 3.1 添加元素
    • 3.2 删除元素
    • 3.3 修改元素
    • 3.4 查找元素
  • 4. 字典遍历方法
    • 4.1 遍历字典元素
  • 5. 公共运算符
  • 6. 公共方法

1. 字典介绍

先来看看现实生活中的字典。我们知道,可以应用字典来查找汉字。
在这里插入图片描述
在这里插入图片描述
接着,来看看Python中的字典。比如,定义一个本书:

{"name":"新华字典","page":568,"price":46.5}

仔细观察,会发现Python字典需要使用{ }引起来,且元素形式为键值对。
键值对,可以理解为一一对应的关系,即可以通过键找到值。

字典语法:

变量名 = {键1: 值1, 键2: 值2, ...}

== 注意==:

  • 键、值组合在一起,形成了字典的元素;

  • 字典元素的键是唯一的

  • 字典元素的值可以重复

  • 可以使用字典存储大量数据。
    实例:
    (1)定义一个字典变量,存放一个学生的信息:姓名、性别、住址、年龄等;

(2)输出并查看字典变量值与类型;

(3)思考1:若给字典变量存放两个性别信息,会怎样?

(4)思考2:若给字典变量再存放一个薪酬,与年龄值相同,会怎样?

# 1.定义字典变量
student = {"name":"欧阳芝","sex":"女","address":"广东广州","age":16}
# 2.查看类型和变量值
print(type(student))  # <class 'dict'>
print(student)
# 3.存放两个性别?  sex  键唯一?
student = {"name":"欧阳芝","sex":"女","address":"广东广州","age":16,"sex":"Female"}
print(student)   # 键是唯一的,如果有多个相同的键, 最后的键会把前面的键所对应的值都给覆盖了
# 4.value多个
student = {"name":"欧阳芝","sex":"女","address":"广东广州","age":16,"salary":16}
print(student)  # 值可以重复

总结:
字典与列表类似,都属于可变数据类型,即当添加元素后,长度也跟着变化。

2. 使用字典

通常情况下,使用字典的是获取元素键值对的值。

通过键来访问值的方式有两种。方式1:

变量名[键]

当访问不存在的键时,提升稳定性,可使用方式2:

函数名含义
get(key[, default])返回指定键key对应的值,若值不在字典中,则返回默认值。

实例:
(1)定义一个字典变量,存放一个学生的信息:姓名、住址、年龄等;

(2)分别使用不同方式去获取字典的姓名、住址值;

(3)思考:当访问不存在的性别信息时,会怎样?

# 1.定义变量
student = {"name":"小明","address":"广东广州","age":16,"sex":"Female"}
# 2.获取值
print(student["name"])
print(student["address"])  # 可以通过键来访问值

# 3.访问不存在的值
print(student["sex"])
print(student.get("sex"))   # 1. None   2.不报错
print(student.get("sex","女"))

3. 字典的常见操作

3.1 添加元素

添加元素指的是:给字典添加新元素内容。

添加元素语法:

变量名[键] = 值

说明:当要添加多个元素时,则执行多次添加元素的操作。

实例:
(1)定义一个字典变量,存放老师信息:姓名、体重、年龄等;

(2)给老师变量添加一个兴趣爱好;

(3)思考:若给一个空字典添加2个元素,该怎么做?

(4)执行程序,观察效果。

# 1.定义变量
teacher = {"name":"teacher1","weight":95,"age":40}
print(teacher)
# 2.添加一个元素
teacher["gender"] = "男"
print(teacher)

# 3.空字典添加2个元素
teacher = {}
teacher["name"] = "teacher2"
teacher["like"] = "爱好工作"
print(teacher)
print(type(teacher))

注意
字典中的元素不分先后顺序,可任意存储字典的数据。

3.2 删除元素

删除元素指的是:删除字典的某元素,或者清空字典的所有数据。

删除元素方法:

函数名含义
del 变量名[键]删除指定元素。
clear()清空字典的所有元素内容。

当要添加新的纯净数据前,要先把原有数据做清空处理。

实例:
(1)定义一个字典变量,存放老师信息:姓名、体重、年龄等;

(2)试着删除字典的体重元素;

(3)思考:当要给字典变量重新添加数据时,该怎么办?

teacher = {"name":"teacher1","weight":95,"age":40}
# 1.删除体重
del teacher["weight"]
print(teacher)

# 2.重新添加数据
teacher.clear()
print(teacher)

总结:

(1)对于删除字典的元素数据,使用较少,了解即可;

(2)注意:在实际应用中,若需要重新给字典变量添加新数据,建议先使用clear()清空数据。

3.3 修改元素

修改元素指的是:对已有元素进行修改,当成功修改后,则会用最新修改的值替换原有值。

修改元素语法:

变量名[键] = 值

实例:
(1)定义一个字典变量,存放老师信息:姓名、体重、年龄等;

(2)修改字典变量的姓名、体重值。

teacher = {"name":"teacher1","weight":95,"age":40}
# 修改姓名
teacher["name"] = "teacher2"
# 修改体重
teacher["weight"] = 110
print(teacher)

3.4 查找元素

查找元素指的是:通过键来访问值。

比如,访问值的方式有两种:

变量名[键]
函数名含义
get(key[, default])返回指定键key对应的值,若值不在字典中,则返回默认值。

实例:
(1)定义一个字典变量,存放老师信息:姓名、体重、年龄等;

(2)使用两种方式来查看老师的姓名、年龄。

teacher = {"name":"teacher1","weight":95,"age":40}
print(teacher["name"])
print(teacher.get("age"))   # 若报错,则优先考虑使用get()

4. 字典遍历方法

当要遍历字典的元素内容,即获取字典的键、值。

常用方法:

函数名含义
keys()以列表的形式,返回一个字典所有的键。
values()以列表的形式,返回一个字典所有的值。
items()返回由键值组成的序列,主要应用于遍历字典。

为便于理解几个方法,可简要理解为:
在这里插入图片描述

4.1 遍历字典元素

keys()方法:

函数名含义
keys()以列表的形式,返回一个字典所有的键。

values()方法:

函数名含义
values()以列表的形式,返回一个字典所有的值。

items()方法:

函数名含义
items()返回由键值组成的序列,主要应用于遍历字典。

实例:
(1)定义一个字典变量,存放一个学生的信息:姓名、住址、年龄等;

(2)获取字典变量中的所有键,并输出【键 --> 值】形式结果;

(3)获取字典变量中的所有值并输出;

(4)获取字典变量中的所有键、值序列;

(5)执行程序,观察效果。

datas = {"name": "张三丰", "address": "武当山", "age": 147}

# 1.keys()
for key in datas.keys():
    print(f"{key} --> {datas.get(key)}")

# 2.values()
for value in datas.values():
    print(value)

# 3.items()
for item in datas.items():
    print(item)

for item in datas.items():
    key = item[0]
    value = item[1]
    print(f"{key} --> {value}")

5. 公共运算符

公共运算符指的是:可以运用于Python容器的一些通用方法。

常见公共运算符:

运算符描述支持的容器类型
+合并字符串、列表、元组
*复制字符串、列表、元组
in元素是否存在字符串、列表、元组、字典
not in元素是否不存在字符串、列表、元组、字典

实例:
(1)定义字符串变量,并完成+、*的运算操作;

(2)定义列表变量,并完成in、not in的运算操作。

# 1.定义字符串, +  *
strs = "Hello"
ret1 = strs + "WORLD"
print(ret1)
print(strs*6)
print("-"*40)

# # 提问
lists = [1,2,3]*2
# # A.[2,3,6]  B.[1,2,3,1,2,3]
print(lists)

# 2.定义列表, in    not in
datas = [1,2,3,[13],100]   # 嵌套列表
print(1 in datas)
print(13 in datas)  # False
print([13] in datas)
print("hello" in datas)

6. 公共方法

公共方法指的是:能适用于Python容器的一些通用方法。

常见公共方法:

描述
len(s)计算容器中的元素总个数
del删除
max()返回容器中元素最大值
min()返回容器中元素最小值

实例:
(1)定义一个列表变量,内容为:10、300、20、200、30、100、0;

(2)获取列表变量的总长度;

(3)获取列表的最大值和最小值;

# 1.定义变量
lists = [10,300,20,200,30,100,0]
# 2.长度
print(len(lists))
# 3.最大最小值
print(max(lists))
print(min(lists))

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

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

相关文章

Hash 专题

一、散列表 根据 key 计算 key 在表中的位置的数据结构&#xff1b;是 key 和其所在 存储地址的映射关系&#xff1b; 注意&#xff1a;散列表的节点中 kv 是存储在一起的&#xff1b; 结构&#xff1a; 二、选择hash的原因 1、需要很强的查找效率 2、强随机分布&#xff…

计算机网络:概述 - 计算机网络概述

目录 一. 互联网概述 1.1 网络 1.2 互联网 1.3 因特网 二. 互联网发展的三个阶段 三. 互联网的标准化工作 四. 互联网的组成 五. 计算机网络的类别 5.1 计算机网络的定义 5.2 计算机网络的不同类别 一. 互联网概述 起源于美国的互联网现如今已…

前端必知必会-响应式网页设计之媒体查询

文章目录 响应式网页设计 - 媒体查询什么是媒体查询&#xff1f;添加断点始终以移动设备为先进行设计另一个断点典型的设备断点方向&#xff1a;纵向/横向使用媒体查询隐藏元素使用媒体查询更改字体大小 总结 响应式网页设计 - 媒体查询 什么是媒体查询&#xff1f; 媒体查询…

动态规划前---选----

前言&#xff1a;基本的算法思路还是先看数据范围&#xff0c;接着看能不能用动态规划来做&#xff0c;刚刚好这个题目可以套用前—选— 题目地址 #include<bits/stdc.h> using namespace std;#define int long long int n,m; const int N (int)305; int dp[N][N]; // 前…

中国电子学会202406青少年软件编程(Python)等级考试试卷(四级)真题与解析

一、单选题(共25题, 共50分) 1.执行以下程序后所输出的结果是?( ) A 20 B 41 C 21 D 91 2.以下说法错误的是?( ) A python中可以在不同的自定义函数中声明相同名字的变量,使用时不会造成数据混乱 B 形参在其自定义函数内不能与其它变量重名 C …

初一信息科技2024指南辅助教学软件(抓包软件)

专门针对信息科技20204指南写的程序&#xff0c;互联网和直播等知识中包含tcp/ip和udp&#xff0c;三次握手等原理&#xff0c;需要简单明了的实验来说明&#xff0c;在机房中需要用抓包软件&#xff0c;可能需要安装windump npcap等软件非常繁琐&#xff0c;还需要接触保护卡&…

Leetcode 寻找重复数

可以使用 位运算 来解决这道题目。使用位运算的一个核心思想是基于数字的二进制表示&#xff0c;统计每一位上 1 的出现次数&#xff0c;并与期望的出现次数做比较。通过这种方法&#xff0c;可以推断出哪个数字重复。 class Solution { public:int findDuplicate(vector<i…

如何写出高效的软件测试用例?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 编写测试用例的目的就是确保测试过程全面高效、有据可查。但要编写出高效的测试用例&#xff0c;需要搞清楚什么是测试用例&#xff0c;以及如何编写出高效的测试用…

Go第三方框架--gin框架(三)

5. net/http框架源码-- 多路复用的实现 这块核心功能对应 1.3 的圆圈2&#xff0c;所属代码如下图&#xff1a; run代码涉及的操作不是gin框架的核心&#xff0c;还记的我说过gin是在net/http的基础上操作的吗&#xff0c;我们来看下gin和net/http包的关联关系。 gin: 主要建…

SurfaceTexture OnFrameAvailableListener 调用流程分析

背景: 最近项目中遇到一个问题, 需要搞清楚OnFrameAvailableListener 回调流程, 本文借此机会做个记录, 巩固印象, 有相关困惑的同学也可以参考下. 本文基于Android 14 framework 源码进行分析 SurfaceTexture.java OnFrameAvailableListener 设置过程 public void setOnFra…

102.游戏安全项目-显示人物属性

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易道云信息技术研究院 上一个内容&#xff1a;101.游戏安全项目-创建人物对象结构 效果图&#xff1a; 以 101.游戏安全项目-创建人物…

[产品管理-15]:NPDP新产品开发 - 13 - 产品创新流程 - 具体产品的创新流程:精益生产与敏捷开发

目录 前言&#xff1a;​ 一、集成产品开发IPD模型——集成跨功能团队的产品开发 1.1 概述 1、IPD模型的核心思想 2、IPD模型的主要组成部分 3、IPD模型的实施步骤 4、IPD模型的优点 1.2 基于IPD系统的组织实践等级 1.3 IPD的优缺点 二、瀑布开发模型 1、定义与特点…

【一分钟学C++】std::memory_order

竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生~ 公众号&#xff1a; C学习与探索 | 个人主页&#xff1a; rainInSunny | 个人专栏&#xff1a; Learn OpenGL In Qt 文章目录 写在前面为什么需要Memory OrderMemory OrderRelaxed OrderRelease-Acquire Order 写在前面 使用std::mem…

day45-测试平台搭建之前端vue学习-基础4

目录 一、生命周期 1.1.概念 1.2.常用的生命周期钩子 1.3.关于销毁Vue实例 1.4.原理​编辑 1.5.代码 二、非单文件组件 2.1.组件 2.2.使用组件的三大步骤 2.3.注意点 2.4.关于VueComponent 2.5.一个重要的内置关系 三、今日学习思维导图 一、生命周期 1.1.概念 1).又名&…

每日OJ_牛客_点击消除(栈)

目录 牛客_点击消除&#xff08;栈&#xff09; 解析代码 牛客_点击消除&#xff08;栈&#xff09; 点击消除_牛客题霸_牛客网 描述&#xff1a; 牛牛拿到了一个字符串。 他每次“点击”&#xff0c;可以把字符串中相邻两个相同字母消除&#xff0c;例如&#xff0c;字符…

【机器学习】10——logistic的直观理解

机器学习10——logistic的直观理解 logistic 目录 机器学习10——logistic的直观理解训练过程具体例子 训练过程 数据集: 特征: 学习时间&#xff08;例如&#xff0c;1小时、2小时等&#xff09;。 标签: 是否通过考试&#xff08;0 或 1&#xff09;。 模型结构: 输入: 学习…

OpenAI推出o1系列模型:AI思考力爆表,带来全新智能体验

OpenAI的——o1系列模型&#xff0c;传说中的「草莓」&#xff0c;终于来与大家见面了&#xff01; 这个新模型可不一般&#xff0c;它可以进行复杂的推理&#xff0c;就像在认真思考一样&#xff0c;不再是简单的回答问题。CEO奥特曼称&#xff0c;这是一个全新的开始。它不仅…

智能照明监控系统在发电厂的应用

0前言 国内发电厂普遍使用传统照明控制方法&#xff0c;包括配电箱集中控制、就地开关控制和自动控制。然而&#xff0c;随着技术进步&#xff0c;这些方法已无法满足对安全、舒适、便捷、信息交互和节能环保的需求。因此&#xff0c;实施智能照明控制系统变得必要&#xff0c…

考研报名确认上传身份证户口本学历证明照片如何压缩裁剪

随着考研季节的到来&#xff0c;数以万计的考生开始准备报名所需的各种材料。在这一过程中&#xff0c;证件照片的上传无疑是一个关键环节。正确的照片格式和尺寸不仅能确保报名流程的顺利进行&#xff0c;还能避免因材料不合格而造成的不必要麻烦。本文将详细介绍如何在考研报…

密码学基础--ECDSA算法入门

目录 1.ECDSA签名长度的疑惑 2.ECDSA原理 2.1 生成签名 2.2 验签过程 2.3 签名编码问题 3.小结 1.ECDSA签名长度的疑惑 我们来看看ECDSA签名长什么样子&#xff0c;使用MuscleV02自动生成密钥对&#xff0c;并对message"0x11223344”进行签名&#xff0c;结果如下&a…