搜索

查看: 3105|回复: 11

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

[复制链接]
发表于 2023-5-4 17:22:17 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:22:17 3105 11 看全部
目录
  • Python字典设置默认值
  • 初始化的时候设定默认值(defaultdict 或 dict.fromkeys)
  • 获取值之前的时候设定默认值(setdefault(key, default))
  • 获取值的时候设定默认值(dict.get(key, default))
  • python创建带默认值的字典
  • 总结
    Python字典设置默认值
    我们都知道,在 Python 的字典里边,如果 key 不存在的话,通过 key 去取值是会报错的。
    >>> aa = {'a':1, 'b':2}
    >>> aa['c']
    Traceback (most recent call last):
      File "", line 1, in
    KeyError: 'c'
    如果我们在取不到值的时候不报错而是给定一个默认值的话就友好多了。

    初始化的时候设定默认值(defaultdict 或 dict.fromkeys)
    >>> from collections import defaultdict
    >>> aa = defaultdict(int)
    >>> aa['a'] = 1
    >>> aa['b'] = 2
    >>> aa
    defaultdict(, {'a': 1, 'b': 2})
    >>> aa['c']
    0
    >>> aa
    defaultdict(, {'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 "", line 1, in
    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 :[])
    总结
    以上为个人经验,希望能给大家一个参考,也希望大家多多支持知鸟论坛
  • 回复

    使用道具 举报

    发表于 2023-6-28 20:15:00 | 显示全部楼层
    执着等待等wc 2023-6-28 20:15:00 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    回复

    使用道具 举报

    发表于 2023-6-28 23:52:44 | 显示全部楼层
    墙和鸡蛋 2023-6-28 23:52:44 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-29 15:53:12 | 显示全部楼层
    米老鼠和蓝精鼠v 2023-6-29 15:53:12 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    回复

    使用道具 举报

    发表于 2023-6-29 17:48:12 | 显示全部楼层
    123456823 2023-6-29 17:48:12 看全部
    其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
    回复

    使用道具 举报

    发表于 2023-6-30 06:28:39 | 显示全部楼层
    当当当当裤裆坦 2023-6-30 06:28:39 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    回复

    使用道具 举报

    发表于 2023-7-1 02:10:08 | 显示全部楼层
    贰十岁装成熟装s 2023-7-1 02:10:08 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    发表于 2023-7-3 09:37:43 | 显示全部楼层
    123456833 2023-7-3 09:37:43 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    回复

    使用道具 举报

    发表于 2023-7-3 10:31:07 | 显示全部楼层
    123456819 2023-7-3 10:31:07 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-7-3 14:59:44 | 显示全部楼层
    十二音阶囤 2023-7-3 14:59:44 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 知鸟论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表