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

Python Cookbook-4.9 从字典中取值

任务

想从字典中取值,但是又不想由于你搜寻的键不存在而处理异常。

解决方案

字典的 get方法正是为取值而准备的。假设你有一个字典d={‘key’:value’,}。为了得到 key 在 d中对应的值,且不希望担心异常的问题,可以这样编写代码:

print(d.get('key','not found'))

如果想在取值之后将该条目删去,用d.pop(执行get和remove 操作)替换 d.get(只读取 d,从不修改d的值)即可。

讨论

为了在键不存在的时候取值且并不引发异常,用字典的简单的get方法即可。

如果试图通过索引的方式取值,比如d[x],而且x并不是字典d的键,你的举动会引发KeyError 异常。这通常也没什么问题。如果期望获取字典中x对应的值,异常是最好的提醒你所犯的错误的方式(比如,可能需要调试你的程序)。

然而,有时候只是想尝试一下,因为你已经知道,x可能不是d的键。这种情况下,不用引入in测试,如下:

if 'key'in d:
	print d['key']
else:
	print 'not found'

或者使用 try/except语句,如下:

try:
	print d['key']
except KeyError:
	print 'not found'

而应该使用 get 方法,就像“解决方案”所示的那样。如果调用 d.get(x),不会有任何异常抛出:如果x是字典d中的键,你会得到d[x],如果不是,你只能得到 None(可以检查或者继续传递)。当x不是d的键的时候,如果None不是你期望的值,还可以调用d.get(x,somethingelse)。这样,如果x不是d的键,得到的值是 somethingelse。

get 是一种简单而有用的机制,Python 的文档对此有很好的解释,奇怪的是有相当多的人并不清楚这一点。另一个类似的方法是 pop,与 get 很类似,只不过当键在字典中时,pop会同时删除该条目。还有一条附加说明:get和pop并不完全对应。如果x不是d的键,d.pop(x)会抛出 KeyError 异常;如果要想获得和 d.get(x)同样的效果,同时还具有删除条目的能力,调用d.pop(x,None)即可。

相关文章:

  • 探索 Ollama:开源大语言模型平台的无限可能​
  • 《大话数据结构》学习记录----第三章线性表
  • SPI 机制与 Spring Boot AutoConfiguration 对比解析
  • 基于linux平台的C语言入门教程(7)类型转换
  • 计算机网络高频(二)TCP/IP基础
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(六)
  • MQTT的安装和使用
  • Leetcode—15. 三数之和(哈希表—基础算法)
  • 【JAVA进阶篇教学】第十一篇:Java中ReentrantLock锁讲解
  • 基于Spring Boot的停车场管理系统的设计与实现(LW+源码+讲解)
  • 在 macOS 上配置 SSH 连接 GitHub
  • 希尔排序
  • C++脚本化方案调研
  • Axure PR 9.0(发音:Ack-sure)原型图工具入门教程:链接交互
  • 股指期货贴水波动,影响哪些投资策略?
  • 制作Oracle11g Docker 镜像
  • 协程的调度的对称与非对称
  • DeepSeek政务应用场景与解决方案【清华大学最新版】
  • 菜鸟之路Day25一一前端工程化(二)
  • 【数据结构进阶】位图
  • 湖北奥莱斯轮胎公司逃避监管排放大气污染物被罚25万元
  • 中邮保险斥资8.69亿元举牌东航物流,持股比例达5%
  • 刘诚宇、杨皓宇进球背后,是申花本土球员带着外援踢的无奈
  • 世界哮喘日|专家:哮喘无法根治,“临床治愈”已成治疗新目标
  • 心期末后有人传——《钱谦益年谱长编》在钱氏故里首发
  • 工信部:加强通用大模型和行业大模型研发布局