Python中如何给字典设置默认值

 更新时间:2023年02月21日 14:15:44   作者:Looooking  
这篇文章主要介绍了Python中如何给字典设置默认值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Python字典设置默认值

我们都知道,在 Python 的字典里边,如果 key 不存在的话,通过 key 去取值是会报错的。

>>> aa = {'a':1, 'b':2}
>>> aa['c']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'c'

如果我们在取不到值的时候不报错而是给定一个默认值的话就友好多了。

初始化的时候设定默认值(defaultdict 或 dict.fromkeys)

>>> from collections import defaultdict
>>> aa = defaultdict(int)
>>> aa['a'] = 1
>>> aa['b'] = 2
>>> aa
defaultdict(<class 'int'>, {'a': 1, 'b': 2})
>>> aa['c']
0
>>> aa
defaultdict(<class 'int'>, {'a': 1, 'b': 2, 'c': 0})
>>> aa = dict.fromkeys('abc', 0)
>>> aa
{'a': 0, 'b': 0, 'c': 0}

defaultdict(default_factory) 中的 default_factory 也可以传入自定义的匿名函数之类的哟。 

>>> aa = defaultdict(lambda : 1)
>>> aa['a']
1

获取值之前的时候设定默认值(setdefault(key, default)) 

这里有个比较特殊的点:只要对应的 key 已经被设定了值之后,那么对相同 key 再次设置默认值就没用了。

因此,如果你在循环里边给一个 key 重复设定默认值的话,那么也只会第一次设置的生效。

>>> aa = {'a':1, 'b':2}
>>> aa
{'a': 1, 'b': 2}
>>> aa.get('c')
>>> aa.setdefault('c', 'hello')
'hello'
>>> aa.get('c')
'hello'
>>> aa
{'a': 1, 'b': 2, 'c': 'hello'}
>>> aa.setdefault('c', 'world')
'hello'
>>> aa.get('c')
'hello'

获取值的时候设定默认值(dict.get(key, default))

>>> aa = {'a':1, 'b':2}
>>> aa
{'a': 1, 'b': 2}
>>> aa['c']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'c'
>>> aa.get('c')
>>> aa
{'a': 1, 'b': 2}
>>> aa.get('c', 'hello')
'hello'
>>> aa.get('b')
2

python创建带默认值的字典

防止keyerror创建带默认值的字典

from collections import defaultdict
data = collections.defaultdict(lambda :[])

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python使用openpyxl读取合并单元格的值

    python使用openpyxl读取合并单元格的值

    本文主要介绍了python使用openpyxl读取合并单元格的值,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • python读取dicom图像示例(SimpleITK和dicom包实现)

    python读取dicom图像示例(SimpleITK和dicom包实现)

    今天小编就为大家分享一篇python读取dicom图像示例(SimpleITK和dicom包实现),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python求最大值最小值方法总结

    python求最大值最小值方法总结

    在本篇内容里小编给大家分享了关于python求最大值最小值方法以及实例内容,有兴趣的朋友们学习下。
    2019-06-06
  • Python面试题之统计哈希列表中最多元素

    Python面试题之统计哈希列表中最多元素

    这篇文章主要为大家讲解Python面试题中的如何统计哈希列表中最多的元素,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家面试成功
    2021-09-09
  • Python+OpenCV实现实时眼动追踪的示例代码

    Python+OpenCV实现实时眼动追踪的示例代码

    这篇文章主要介绍了Python+OpenCV实现实时眼动追踪的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Python实现目录自动清洗

    Python实现目录自动清洗

    这篇文章主要为大家详细介绍了Python实现目录自动清洗的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • Python使用matplotlib创建Gif动图的思路

    Python使用matplotlib创建Gif动图的思路

    这篇文章主要介绍了Python使用matplotlib创建Gif动图,我们将讨论matplotlib提供的名为“Animation”的动画库之一,Python二维绘图库是Matplolib可以轻松创建绘图、直方图、条形图、散点图等,需要的朋友可以参考下
    2022-04-04
  • PyTorch的SoftMax交叉熵损失和梯度用法

    PyTorch的SoftMax交叉熵损失和梯度用法

    今天小编就为大家分享一篇PyTorch的SoftMax交叉熵损失和梯度用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python ForMaiR实现自定义规则的邮件自动转发工具

    python ForMaiR实现自定义规则的邮件自动转发工具

    这篇文章主要为大家介绍了python ForMaiR实现自定义规则的邮件自动转发工具示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 深入解析python中的实例方法、类方法和静态方法

    深入解析python中的实例方法、类方法和静态方法

    这篇文章主要介绍了python中的实例方法、类方法和静态方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03

最新评论