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

别再使用[]来获取字典的值了,来尝试一下这些方法

字典

在Python中,字典(Dictionary)是一种非常灵活的数据结构,用于存储键值对(key-value pairs)。每个键都是唯一的,并且与某个值相关联。字典是Python中处理映射关系(即一个键对应一个值)的内置类型。

字典的基本描述

字典在Python中通过花括号{}定义,键和值之间用冒号:分隔,键值对之间用逗号,分隔。例如:

my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}

直接通过键访问

最直接的方式是通过键直接访问对应的值。如果键存在,则返回对应的值;如果键不存在,则抛出KeyError。

有一个字典person_info,包含人的基本信息,如姓名、年龄和邮箱。我们想要获取这个人的姓名。

# 定义字典  
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}  # 通过键访问值  
name = person_info['name']  
print(f"Name: {name}")  # 输出: Name: Tom  # 如果尝试访问不存在的键,会抛出KeyError  
# print(person_info['phone'])  # 这会抛出KeyError

使用get()方法

get()方法提供了一种更安全的访问字典值的方式。如果键存在,则返回对应的值;如果键不存在,则返回None(或者指定的默认值)。

同样使用person_info字典,但这次我们想安全地获取邮箱,如果邮箱不存在,则返回"Unknown"。

# 定义字典  
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}  # 使用get()方法访问值  
email = person_info.get('email', 'Unknown')  
print(f"Email: {email}")  # 输出: Email: tom@example.com  # 尝试获取不存在的键,返回默认值  
phone = person_info.get('phone', 'Unknown')  
print(f"Phone: {phone}")  # 输出: Phone: Unknown

遍历字典

遍历字典可以访问所有的键值对。这可以通过for循环和items()、keys()、values()方法实现。

遍历person_info字典,打印出每个人的姓名和年龄。

# 定义字典  
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}  # 遍历字典的键值对  
for key, value in person_info.items():  if key in ['name', 'age']:  # 只打印姓名和年龄  print(f"{key}: {value}")  
# 输出:  
# name: Tom  
# age: 30

遍历字典的键

遍历person_info字典的键,并打印出每个键。

# 定义字典  
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}  # 遍历字典的键  
for key in person_info:  print(key)  
# 输出:  
# name  
# age  
# email

遍历字典的值

遍历person_info字典的值,并打印出每个值。

# 定义字典  
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}  # 遍历字典的值  
for value in person_info.values():  print(value)  
# 输出:  
# Tom  
# 30  
# tom@example.com

使用pop()方法

从person_info字典中移除age键值对,并获取其值。

# 定义字典  
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}  # 使用pop()方法移除并获取值  
age = person_info.pop('age')  
print(f"Age: {age}")  # 输出: Age: 30  # 查看修改后的字典  
print(person_info)  # 输出: {'name': 'Tom', 'email': 'tom@example.com'}

使用popitem()方法

注意,popitem()方法会移除并返回一个任意键值对(在Python 3.7+中,由于字典是有序的,因此它通常返回最后插入的键值对)。

# 定义字典  
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}  # 使用popitem()方法移除并获取键值对  
key, value = person_info.popitem()  
print(f"Key: {key}, Value: {value}")  # 输出可能因字典内容不同而有所差异  
# 例如: Key: email, Value: tom@example.com  # 查看修改后的字典  
print(person_info)  # 输出将不包含被移除的键值对

使用字典推导式

虽然字典推导式不直接用于获取值,但可以用来基于现有字典创建新字典。
创建一个新字典,其键为原字典值的长度,值为原字典的键

# 定义字典  
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}  # 使用字典推导式创建新字典  
new_dict = {len(str(value)): key for key, value in person_info.items()}  # 注意:由于键冲突的可能性,这里的结果可能不是预期的  
# 打印新字典 
print(new_dict)  # 输出可能因字典内容不同而有所差异  
# 例如: {3: 'age', 4: 'name', 13: 'email'}(注意:实际输出可能不同,因为字典不保证顺序)

推荐阅读

Python基础

Python全网最全基础课程笔记(一)——基础入门
Python全网最全基础课程笔记(二)——变量
Python全网最全基础课程笔记(三)——所有运算符+运算符优先级
Python全网最全基础课程笔记(四)——基本数据类型
Python全网最全基础课程笔记(五)——选择结构+Python新特性Match
Python全网最全基础课程笔记(六)——循环结构
Python全网最全基础课程笔记(七)——列表,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
Python全网最全基础课程笔记(八)——字典,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
Python全网最全基础课程笔记(九)——集合,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
Python全网最全基础课程笔记(十)——元组,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
Python全网最全基础课程笔记(十一)——字符串所有操作,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
Python全网最全基础课程笔记(十二)——函数,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
Python全网最全基础课程笔记(十三)——作用域,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!

Flink入门到就业

2024年最新Flink教程,从基础到就业,大家一起学习–基础篇
2024年最新Flink教程,从基础到就业,大家一起学习–入门篇
2024年最新Flink教程,从基础到就业,大家一起学习–Flink集群部署
2024年最新Flink教程,从基础到就业,大家一起学习–flink部署和集群部署(从本地测试到公司生产环境如何部署项目源码)
2024年最新Flink教程,从基础到就业,大家一起学习–Flink运行架构底层源码详解+实战
2024年最新Flink教程,从基础到就业,大家一起学习–Flink DataStream API-第一篇+源码讲解
在这里插入图片描述

相关文章:

别再使用[]来获取字典的值了,来尝试一下这些方法

字典 在Python中,字典(Dictionary)是一种非常灵活的数据结构,用于存储键值对(key-value pairs)。每个键都是唯一的,并且与某个值相关联。字典是Python中处理映射关系(即一个键对应一…...

如果你不愿意冒一切风险,就不要成为创业者:如何建立一个年收入 1800 万美元的支付业务

作者:Austin Mac Nab,VizyPay 的 CEO 兼创始人 在创业初期,如果有人告诉我,我需要冒一切风险才能成功,我大概会吓得绕道而行。但事实是,如果你不愿意冒一切风险,就不要成为创业者。本着这个信念…...

4.浮点数二分【求数的平方根】

模板 public class BinarySearch {// 检查x是否满足某种性质public static boolean check(double x) {// 实现具体的检查逻辑return false; // 这里仅为示例,实际根据需求修改}public static double bsearch_3(double l, double r) {final double eps 1e-6; // …...

简站wordpress主题产品多图ACF插件设置方法

此教程仅适用于演示站有产品多图的主题,演示站没有产品多图的主题,就别往下看了,省得浪费时间。 1、给产品添加轮播图 简站wordpress主题有多个产品图的主题,添加产品轮播图的具体方法如下: 1.2、选择产品分类 添加…...

USB设备在Linux系统中的识别和加载过程

文章目录 一、USB设备的插入与检测二、中断处理与设备识别三、驱动程序加载与设备注册四、设备节点创建与权限分配五、设备初始化与通信 在Linux系统中,USB设备的自动识别和加载过程是一个高效且复杂的机制,确保了用户能够无缝地使用这些设备。本文将深入…...

nacos通过@Value动态刷新配置

Value获取最新值 引入jar包&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.2.1.RELEASE</version> </dependency>引入配置…...

[研发工具箱] 系列3.机电类常用的分类网站

工具箱系列1里&#xff0c;我们对国家标准馆提供的服务做了一些简介&#xff0c;在研发工作中还有一些非常宝贵的资讯来源&#xff0c;现在尽可能多的列举出一些宝贝网站&#xff1a; 1.文献标准类网站&#xff1a; 我经常会用到3 NTSL国家科技图书文献中心 之前提到的国家标…...

volatile关键字最全原理剖析

介绍 volatile是轻量级的同步机制&#xff0c;volatile可以用来解决可见性和有序性问题&#xff0c;但不保证原子性。 volatile的作用&#xff1a; 保证了不同线程对共享变量进行操作时的可见性&#xff0c;即一个线程修改了某个变量的值&#xff0c;这新值对其他线程来说是…...

mysql学习教程,从入门到精通,SQL RIGHT JOIN语句(24)

1、SQL RIGHT JOIN语句 RIGHT JOIN&#xff08;也被称为RIGHT OUTER JOIN&#xff09;是一种SQL语句&#xff0c;它用于从两个或多个表中根据连接条件返回右表&#xff08;RIGHT JOIN语句中指定的表&#xff09;的所有记录&#xff0c;以及左表中匹配的记录。如果左表中的行在…...

LeaferJS 动画、状态、过渡、游戏框架

LeaferJS 现阶段依然专注于绘图、交互和图形编辑场景。我们引入游戏场景&#xff0c;只是希望让 LeaferJS 被更多有需要的人看到&#xff0c;以充分发挥它的价值 LeaferJS 为你带来了全新的游戏、动画、状态和过渡功能&#xff0c;助你实现那些年少时的游戏梦想。我们引入了丰富…...

14年408-计算机网络

第一题&#xff1a; 解析&#xff1a;OSI体系结构 OSI由下至上依次是&#xff1a;物理层-网络链路层-网络层-运输层-会话层-表示层-应用层。 因此直接为会话层提供服务的是运输层。答案选C 第二题&#xff1a; 解析&#xff1a;数据链路层-交换机的自学习和帧转发 主机a1向交换…...

告别熬夜,追求高效写作:芝士AI写作,效率与质量的双重提升

好的工具&#xff0c;真得能够让我们的学习事半功倍&#xff0c;有了芝士AI&#xff08;paperzz&#xff09;工具的加持&#xff0c;妈妈再也不用担心我熬夜写论文了 。 芝士AI官网&#xff1a;https://www.paperzz.cn/ 不愧是由985硕博团队开发的AI大模型功软件&#xff0c;…...

stm32单片机个人学习笔记8(TIM输出比较)

前言 本篇文章属于stm32单片机&#xff08;以下简称单片机&#xff09;的学习笔记&#xff0c;来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记&#xff0c;只能做参考&#xff0c;细节方面建议观看视频&#xff0c;肯定受益匪浅。 STM32入门教程-2023版 细…...

【qt】QQ仿真项目1

一览全局: QQ仿真项目 一.创建项目添加资源文件二.创建数据库三.自定义标题栏Qt类四.加载样式表标题栏按钮的搭配五.标题栏实现移动窗体六.标题栏按钮连接信号槽七.标题栏双击最大化和还原八.基类窗口实现标题栏按钮信号九.重写基类窗口绘图事件确保设置样式表生效十.用户登录界…...

Vue3:shallowRef与shallowReactive

目录 一.shallowRef 和 shallowReactive 1.shallowRef 2.shallowReactive 二.ref 和 reactive 1. ref 2. reactive 三.各自使用场景 1.shallowRef 2.shallowReactive 3.ref 4.reactive 四.shallowRef 使用 五.shallowReactive使用 六.效果 一.shallowRef 和 shal…...

django开发流程3(轮播图)

1.在models中创建一个模板 class Ads(models.Model):title models.CharField(verbose_name"标题", max_length30)image models.ImageField(verbose_name"广告图", upload_to"ads")url models.URLField(verbose_name"链接网址", de…...

MySQL的增删查改(基础)一

一.增 方式1&#xff08;简写插入&#xff09;&#xff1a; 语法&#xff1a;insert into 表名 values&#xff08;值&#xff0c;值&#xff0c;值……&#xff09;; 这里insert into 代表要插入一条新数据行&#xff0c;values后面就是该行的值&#xff0c;其中后面的值的…...

深度学习(入门)03:监督学习

1、监督学习简介 监督学习&#xff08;Supervised Learning&#xff09;是一种重要的机器学习方法&#xff0c;它的目标是通过“已知输入特征”来预测对应的标签。在监督学习中&#xff0c;每一个“特征-标签”对被称为样本&#xff08;example&#xff09;&#xff0c;这些样…...

Django——admin创建和使用

1. Django Admin简介 Django Admin是Django框架自带的一个管理后台工具&#xff0c;它允许开发者通过一个直观的Web界面轻松地管理应用中的数据模型。Admin提供了模型的CRUD&#xff08;Create,Read, Update, Delete&#xff09;操作&#xff0c;以及数据的批量处理和搜索功能…...

鸿蒙开发(NEXT/API 12)【硬件(取消注册智慧出行连接状态的监听)】车载系统

取消注册智慧出行连接状态的监听。 接口说明 接口名描述[off] (type: ‘smartMobilityStatus’, smartMobilityTypes: SmartMobilityType[], callback?: Callback): void取消注册智慧出行连接状态的监听。 开发步骤** 导入Car Kit模块。 import { smartMobilityCommon } fr…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥&#xff0c;再multisim中选择FWB&#xff0c;就有各种型号的电桥: 电桥是用来干嘛的呢&#xff1f; 它是一个由四个二极管搭成的“桥梁”形状的电路&#xff0c;用来把交流电&#xff08;AC&#xff09;变成直流电&#xff08;DC&#xff09;。…...