开发者

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

目录
  • 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 "<stdin>", line 1, in <module>
      KeyError: 'c'

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

      初始化的时候http://www.devze.com设定默认值(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 再次设置默认值就www.devze.com没用了。

      因此,如果你在循环里边给一个 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'

      获取值的时候设定默认值(开发者_Python入门dict.get(key, default))

      >>> aa = {'a':1, 'b':2}
      >>> aa
      {'a': 1, 'b': 2}
      >>&gjst; 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')
      'helandroidlo'
      >>> aa.get('b')
      2

      python创建带默认值的字典

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

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

      总结

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

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新开发

      开发排行榜