Python字典的查询操作

一、前言

在 Python 中,字典(dict) 是一种非常常用的数据结构,以键值对(Key-Value Pair)形式存储数据,支持快速查找、插入和删除操作。

本文将系统性地介绍 Python 字典中常见的查询操作方法,包括如何访问元素、判断键是否存在、获取所有键/值/项、遍历查询等,并结合大量代码示例帮助你全面掌握字典查询的核心技能。

二、基本查询操作

1. 使用方括号 [] 查询指定键的值

这是最直接的查询方式:

student = {'name': 'Alice', 'age': 20, 'major': 'Computer Science'}
print(student['name'])   # Alice
print(student['age'])    # 20

⚠️ 如果键不存在,会抛出 KeyError 异常。

2. 使用 .get() 方法安全查询

推荐用于避免程序崩溃:

print(student.get('name'))       # Alice
print(student.get('gender'))     # None
print(student.get('gender', 'not found'))  # not found

✅ 特点:

  • 键不存在时返回 None 或自定义默认值;
  • 更加健壮,推荐在实际开发中优先使用。

3. 判断某个键是否存在:in 关键字

if 'age' in student:print("年龄信息存在")
else:print("年龄信息不存在")

✅ 避免 KeyError,是查询前检查的常用方式。

4. 获取所有键、值、键值对

方法描述
.keys()返回所有键
.values()返回所有值
.items()返回键值对元组列表
print(student.keys())    # dict_keys(['name', 'age', 'major'])
print(student.values())  # dict_values(['Alice', 20, 'Computer Science'])
print(student.items())   # dict_items([('name', 'Alice'), ('age', 20), ('major', 'Computer Science')])

你可以将其转换为列表进行进一步处理:

keys_list = list(student.keys())
print(keys_list)  # ['name', 'age', 'major']

三、进阶查询技巧

1. 遍历字典查询

(1)只遍历键
for key in student:print(key)
(2)同时遍历键和值
for key, value in student.items():print(f"{key}: {value}")

输出:

name: Alice
age: 20
major: Computer Science

2. 查询多个键的值(可选默认值)

def get_multiple(d, keys, default=None):return [d.get(k, default) for k in keys]result = get_multiple(student, ['name', 'gender', 'age'], 'unknown')
print(result)  # ['Alice', 'unknown', 20]

3. 多层嵌套字典的查询

当字典结构复杂时,可以通过链式访问或使用 get() 层层查询:

data = {'user': {'id': 1,'profile': {'name': 'Bob','email': 'bob@example.com'}}
}# 普通访问
print(data['user']['profile']['name'])  # Bob# 安全访问
print(data.get('user', {}).get('profile', {}).get('name'))  # Bob
print(data.get('user', {}).get('profile', {}).get('gender', 'not found'))  # not found

4. 查询满足条件的键值对(字典推导式)

可以使用字典推导式来筛选符合条件的键值对:

scores = {'math': 90, 'english': 75, 'physics': 85, 'chemistry': 60}
high_scores = {k: v for k, v in scores.items() if v >= 80}
print(high_scores)  # {'math': 90, 'physics': 85}

四、常见问题与注意事项

问题原因解决方法
报错:KeyError访问了不存在的键使用 .get() 或先用 in 检查
查询结果为 None键不存在且未设置默认值设置默认值参数
遍历时修改字典报错在遍历过程中删除或添加键值对使用副本遍历:list(dict.items())
嵌套字典访问出错未判断中间层级是否存在使用多重 .get() 或函数封装

五、总结对比表

操作方法是否安全是否返回值说明
查询键值d[key]键必须存在,否则抛异常
安全查询d.get(key, default)推荐使用
判断键是否存在key in d推荐作为前置判断
获取所有键d.keys()可转为列表处理
获取所有值d.values()可用于统计
获取所有键值对d.items()遍历最佳方式
遍历查询for key in d: / for k, v in d.items():支持多种遍历方式
多条件筛选字典推导式灵活高效
嵌套查询链式 .get()推荐写法

六、结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!

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

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

相关文章

pyhton基础【18】面向对象基础一

目录 一.面向对象 二.面向对象概述 三.类与对象 一.面向对象 Python中的面向对象编程OOP是一种编程范式,它使用对象来设计软件。对象是具有属性(称为属性)和可以执行的操作(称为方法)的数据结构。 基础概念 类:class 类是创建对象的蓝图或模板。它…

Requests源码分析:面试考察角度自验(初级)

简单描述执行流程 Q:能简单描述一下发送一个requests.get(url)请求时,在requests库内部的主要执行流程吗?(从调用get方法到收到响应) 入口委托: get() 方法内部调用 requests.request(GET, url)。Session 接管: request() 方法会获取或隐式创建一个 Session 对象,并调用…

鸿蒙5:条件-循环-列表渲染

注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

浅谈AI大模型-MCP

MCP简介 MCP(Model Context Protocol,模型上下文协议 ),24年11月初的时候Anthropic发了一篇技术博客,推出了他们的模型上下文协议MCP,介绍了一种规范:应用如何为LLM提供上下文。官网称MCP为AI应…

MySQL数据库基础概述

前言: MySQL作为全球应用最广泛的开源关系型数据库管理系统(RDBMS)​,凭借其高性能、高可靠性与零成本特性,已成为Web应用、企业系统的核心数据引擎。它遵循SQL标准,通过表结构实现数据的结构化存储&#x…

桌面小屏幕实战课程:DesktopScreen 16 HTTP

飞书文档http://https://x509p6c8to.feishu.cn/docx/doxcnrxBs55qGn6xoysTcJpqwRf /home/kemp/work/esp/esp-idf/examples/protocols/http_request 源码下载方式参考: 源码下载方式 心知天气 注册账号,申请产品,获取密钥 产品 天气数据 H…

vs2019 + QT下 vs2019创建的项目打开ui文件失败

问题: 在vs2019 QT模式下。使用2019创建工程后。点击ui文件打开时。出现奔溃,如下图 解决方式: ui文件->右键->打开方式->添加->程序->点击三个点->qcreator(qt安装目录) ->设置为默认值->确定 点击设置为默认值,点…

WPS之PPT镂空效果实现

1、准备一张图片,剪切存入剪贴板 2、把图片设为背景 右键 》 设置背景格式 》 图片或纹理填充 》 图片填充选择剪贴板 3、插入一个矩形覆盖全图,设置无线条渐变填充从左到右 4、插入圆角矩形 5、单击小黄点调整弧度 6、选择无线条幻灯片背景填充 7、插…

服务注册中心的本质抉择:从业务本质看AP与CP的终极之选

本文从服务注册中心的本质职责出发,通过分析其核心功能、业务场景和技术约束,深入探讨服务注册中心在架构设计上应该优先保证AP还是CP特性。文章首先剖析服务注册中心的根本使命,然后从分布式系统原理、生产实践案例和性能表现三个维度进行对…

mybatis-plus从入门到入土(一):快速开始

​ 朋友们, 大家好, 从今天开始我想开一个系列博客。名字起的比较随意就叫Mybatis-Plus从入门到入土, 这系列博客的定位是从基础使用开始, 然后逐步深入全面的了解Mybatis-Plus框架, 写这个博客的主要原因是工作中经常用到Mybatis-Plus框架, 因而对这个框架相对比较了解一些, 顺…

如何快速将iPhone中的文本保存到电脑上

您的 iPhone 上是否有很多重要的短信,并且您想将短信备份到计算机上?我们都知道传输消息与传输照片不同,但幸运的是,您可以使用相关的工具和方法来实现。我们介绍了 4 种方法来解释如何将 iPhone 中的文本保存到计算机。所有的办法…

【OpenGL学习】(八)图形变换

OpenGL图形变换介绍:https://learnopengl-cn.github.io/01%20Getting%20started/07%20Transformations 【OpenGL学习】(八)图形变换 本项目将通过变换矩阵,对【OpenGL学习】(七)纹理单元 中的图形进行缩放…

从理论到实战:解密大型语言模型的核心技术与应用指南

一、Transformer:语言理解与生成的基石 Transformer 架构的出现,彻底改变了自然语言处理(NLP)的格局。它以“注意力”为核心,将全局依赖的捕捉效率推向新高。下面用 图简要概览其数据流: 从上图可见&#…

kali换源

在Kali Linux中切换软件源可以提高软件下载速度,下面为你介绍切换源的方法。 一、备份原配置文件 首先备份原配置文件,避免操作失误导致问题: sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak二、编辑源配置文件 使用以下命令编…

从决策树到随机森林:Python机器学习里的“树形家族“深度实战与原理拆解

引言 在机器学习的算法森林中,有一对"树形兄弟"始终占据着C位——决策树像个逻辑清晰的"老教授",用可视化的树状结构把复杂决策过程拆解成"是/否"的简单判断;而它的进阶版随机森林更像一支"精英军团&quo…

uniapp,每次请求时,中断上次请求

1.封装uni.request import {BASE_URL} from "/config/config.js"import store from "/store/index.js"; class RequestManager {constructor() {this.requestTasks new Map() // 存储所有请求任务this.baseURL BASE_URLthis.header {Content-Type: app…

DuDuTalk | 武汉赛思云科技有限公司通过武汉市人工智能企业认定!

近日,2025年武汉市人工智能企业名单正式公布!武汉赛思云科技有限公司(以下简称赛思云科技)凭借卓越的技术实力与创新成果,成功入选武汉市人工智能企业。这是对公司长期深耕AI语音智能领域、推动数字化转型的高度认可&a…

STM32实现傅里叶变换精确计算采样电流值

以下是基于离散傅里叶变换(DFT)算法在单片机上实现精确电流值计算的全流程指南,结合硬件选型、算法优化、代码实现及实际应用场景分析,综合多篇技术文档的实践要点: ⚙️ 一、系统设计核心要点 硬件选型与配置 单片机选择:优先采用带硬件浮点单元(FPU)的STM32F4/F7系列…

python 爬虫 下载视频

测试 OK II 在开发者工具里面 直接搜索m3u8 可以直接找相对应连接地址继续分析 这个m3u8 url地址是从哪里过来的 在什么地方有 III 我们想要视频数据 <m3u8连接> 在 网页源代码里面有获取整个视频内容 --》分为N个视频片段《ts文件》-->在m3u8连接里面--> 视频播放…

希尔伯特空间:无穷维度的几何世界

希尔伯特空间&#xff1a;无穷维度的几何世界 从量子物理到信号处理&#xff0c;希尔伯特空间为现代科学与工程提供了强大的数学框架 引言&#xff1a;无限维度的舞台 在数学和物理学的广阔领域中&#xff0c;希尔伯特空间扮演着至关重要的角色。这个完备的内积空间不仅推广了…