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

作者:Looooking 时间:2023-09-21 00:15:32 

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 :[])

来源:https://blog.csdn.net/TomorrowAndTuture/article/details/113121157

标签:Python,字典,默认值
0
投稿

猜你喜欢

  • jquery实现标签上移、下移、置顶

    2024-04-19 10:17:30
  • 深入解析MySQL的事务隔离及其对性能产生的影响

    2024-01-27 11:17:07
  • 对Python的Django框架中的项目进行单元测试的方法

    2021-02-23 03:17:04
  • mysql community server 8.0.12安装配置方法图文教程

    2024-01-21 19:28:04
  • MySQL Innodb关键特性之插入缓冲(insert buffer)

    2024-01-22 20:58:16
  • golang bufio包中Write方法的深入讲解

    2024-05-08 10:45:31
  • vue如何使用router.meta.keepAlive对页面进行缓存

    2024-05-29 22:49:03
  • python中验证码连通域分割的方法详解

    2022-09-30 11:04:00
  • 使用 vue 实例更好的监听事件及vue实例的方法

    2024-05-21 10:15:55
  • Ubuntu安装Mysql启用远程连接的详细图文教程

    2024-01-25 16:57:31
  • ASP基础教程之学习ASP中子程序的应用

    2008-10-16 10:53:00
  • 在ASP.NET 2.0中操作数据之十:使用 GridView和DetailView实现的主/从报表

    2023-07-02 20:22:40
  • python中for语句简单遍历数据的方法

    2023-04-18 11:26:45
  • asp获取数据库中表名和字段名的代码

    2011-04-18 11:02:00
  • 分析python服务器拒绝服务攻击代码

    2021-07-21 20:47:29
  • 探究Python中isalnum()方法的使用

    2021-12-05 19:05:31
  • 实例讲解Python中SocketServer模块处理网络请求的用法

    2021-04-16 13:25:27
  • Javascript 颜色渐变效果的实现代码

    2024-05-05 09:15:50
  • Typora+PicGo+GitHub实现md自带图床效果

    2023-05-24 23:02:24
  • 使用IP地址来统计在线人数方法

    2007-08-13 12:51:00
  • asp之家 网络编程 m.aspxhome.com