前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >抛弃dict[key]的方式访问Python字典的值

抛弃dict[key]的方式访问Python字典的值

原创
作者头像
AIFEx
发布2023-10-04 12:16:33
1700
发布2023-10-04 12:16:33
举报
文章被收录于专栏:AIFEx的专栏AIFEx的专栏

0. 标题

抛弃dictkey的方式访问Python字典的值

代码语言:txt
复制
作者: quantgalaxy@outlook.com   
blog: https://blog.csdn.net/quant_galaxy  
欢迎交流

1. What: dictkey访问方式是什么

从各种教程中,学到访问字典的方式,基本都是dictkey这样的方式,比如:

代码语言:python
复制
d = {'apple':4, 'orange':5, 'pear':6}

x = d['apple']    # 4
y = d['orange']   # 5
z = d['pear']     # 6

通过dkey来获取字典d中key对应的值。

如果访问的key不存在呢?比如:

代码语言:python
复制
d = {'apple':4, 'orange':5, 'pear':6}

a = d['pineapple']
代码语言:txt
复制
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Cell In[202], line 3
      1 d = {'apple':4, 'orange':5, 'pear':6}
----> 3 a = d['pineapple']

KeyError: 'pineapple'

如果key不存在,dkey会抛出一个KeyError类型的异常,这将导致python程序崩溃,这是非常令人烦恼的事情。

2. Why: 为什么在程序中避免抛出异常

如果是在运行一个离线任务,需要跑好几个小时,但是在运行几个小时后,程序突然崩溃了,抛出了一个KeyError,这会导致之前的结果全都失效,需要重跑。

如果是一个游戏,打boss进行了一半,一个异常导致整个游戏崩溃,也是用户不可接受的事情。

除了异常的处理,我们尽可能的,应该用非抛出异常的方式,处理各种可能性。

我们可以通过判断key是否存在的方式,先进行访问再调用,比如:

代码语言:txt
复制
d = {'apple':4, 'orange':5, 'pear':6}

if 'pineapple' in d:
	a = d['pineapple']
else:
	a = ""

通过这样的方式,可以避免访问到不存在的key,缺点就是,需要每次都要先检查在使用,并根据不同的类型设置不同的默认值。

还有一种方式,就是dict.get()方法,实现了上面的需要。如果key不存在,不会抛出异常,会返回一个None,或者可以指定默认值。

代码语言:txt
复制
作者: quantgalaxy@outlook.com   
blog: https://blog.csdn.net/quant_galaxy  
欢迎交流

3. How:如何使用dict.get()方法访问key

代码语言:txt
复制
d = {'apple':4, 'orange':5, 'pear':6}

x = d.get('apple')      # 4
y = d.get('orange')     # 5
z = d.get('pear')       # 6
a = d.get('pineapple')  # None

通过上面的例子,可以看出,我们完美的解决了上面出现的问题。

使用dict.get()有如下好处:

  1. key存在,和dictkey有一样的行为。
  2. key不存在,dict.get(key)不会抛出异常。
  3. key不存在,dict.get(key)会返回一个默认值。

我们还可以指定dict.get()方法的默认值,dict.get(key, defaultValue),比如:

代码语言:python
复制
d = {'apple':4}

x = d.get('apple')          # 4
y = d.get('orange', 100)    # 100
z = d.get('pear', 3.14159)  # 3.14159

如果key存在,实际值被返回。

如果key不存在,设置的默认值被返回,就是第二个参数。

4. 作者信息

代码语言:txt
复制
作者: quantgalaxy@outlook.com   
blog: https://blog.csdn.net/quant_galaxy  
欢迎交流

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0. 标题
  • 1. What: dictkey访问方式是什么
  • 2. Why: 为什么在程序中避免抛出异常
  • 3. How:如何使用dict.get()方法访问key
  • 4. 作者信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档