Python defaultdict方法使用分析

作者:Python热爱者 时间:2023-01-02 18:05:35 

defaultdict底层代码

Python defaultdict方法使用分析

在字典中查找某个值时,若key不存在时则会返回一个KeyError错误而不是一个默认值,这时候可以使用defaultdict函数。

注意:使用dict[key]=value时,若key不存在则报错;使用dict.get(key)时,若key不存在则会返回一个默认值。

defaultdict接受一个工厂函数作为参数,如下来构造:

dict =defaultdict( factory_function)

factory_function可以是list、set、str等等,作用是当key不存在时,返回的是工厂函数的默认值,比如list对应[ ],str对应的是空字符串,set对应set( ),int对应0。

defaultdict是python内建dict类的一个字类,功能与dict相同,但它带有一个默认的值,若key值不存在时返回一个默认的值。

示例代码:

lst = ['A', 'B', 'C', 'D', 'e']
dic = {}
for i in lst:
   dic[i] += 1
print(dic)

若访问字典中的key值不存在时会报KeyError错误,这时候就可以使用defaultdict类来避免这种错误。

Python defaultdict方法使用分析

dict.setdefault()方法:有两个参数,第一个是参数,第二个是默认值。

示例代码:

lst = ['A', 'B', 'C', 'D', 'e']
dic = {}
for i in lst:
   dic.setdefault(i, 0)
   dic[i] += 1
print(dic)

Python defaultdict方法使用分析

示例代码:

from collections import defaultdict
dict1 = defaultdict(int)
dict2 = defaultdict(set)
dict3 = defaultdict(str)
dict4 = defaultdict(list)
dict4[1] = 666
print(dict1[0])
print(dict2[0])
print(dict3[0])
print(dict4[0])
print(dict4[1])

运行效果:

Python defaultdict方法使用分析

Python的字典是否有默认值

众所周知,在Python中如果访问字典中不存在的键,会引发KeyError异常(JavaScript中如果对象中不存在某个属性,则返回undefined)。但是有时候,字典中的每个键都存在默认值是非常方便的。例如下面的例子:

strings = ('puppy', 'kitten', 'puppy', 'puppy', 'weasel', 'puppy', 'kitten', 'puppy') counts = {}
for kw in strings:
   counts[kw] += 1

该例子统计strings中某个单词出现的次数,并在counts字典中作记录。单词每出现一次,在counts相对应的键所存的值数字加1。但是事实上,运行这段代码会抛出KeyError异常,出现的时机是每个单词第一次统计的时候,因为Python的dict中不存在默认值的说法。

为了解决上述问题,我们可以先加个判断语句,若key不存在,则其value值设为1

strings = ('puppy', 'kitten', 'puppy', 'puppy',
          'weasel', 'puppy', 'kitten', 'puppy')
counts = {}
for kw in strings:
   if kw not in counts:
       counts[kw] = 1
   else:
       counts[kw] += 1

同样也可以利用setdefault的方法来设置默认值:

strings = ('puppy', 'kitten', 'puppy', 'puppy',
          'weasel', 'puppy', 'kitten', 'puppy')
counts = {}
for kw in strings:
   counts.setdefault(kw, 0)
   counts[kw] += 1

还有一种方法来对字典进行初始化操作——defaultdict

defaultdict类就好像是一个dict,但是它是使用一个类型来初始化的:

>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d['k1']
[]
>>> d
defaultdict(<class 'list'>, {'k1': []})
>>> d['k2']='kobe'
>>> d
defaultdict(<class 'list'>, {'k1': [], 'k2': 'kobe'})
>>> d['k3'].append('lebron')
>>> d
defaultdict(<class 'list'>, {'k1': [], 'k2': 'kobe', 'k3': ['lebron']})

来源:https://blog.csdn.net/qdPython/article/details/127184108

标签:Python,defaultdict,函数
0
投稿

猜你喜欢

  • python借助ChatGPT读取.env实现文件配置隔离保障私有数据安全

    2022-12-26 17:54:13
  • Python中Parser的超详细用法实例

    2022-05-02 10:16:30
  • CentOS系统中PHP和MySQL的升级方法

    2023-11-20 21:04:19
  • 关于pyqt5控件自适应窗口超详细知识点汇总

    2021-03-26 14:37:57
  • Golang 按行读取文件的三种方法小结

    2024-02-20 18:45:29
  • mysql如何实现多行查询结果合并成一行

    2024-01-19 15:33:38
  • Python unittest单元测试框架的使用

    2021-11-26 15:56:37
  • python根据字典的键来删除元素的方法

    2023-05-08 00:58:57
  • Python类中__init__() 和self的详细解析

    2021-04-22 22:05:06
  • Python中的//符号是什么意思呢

    2023-11-18 10:18:27
  • python 随机数使用方法,推导以及字符串,双色球小程序实例

    2023-10-11 08:48:31
  • Selenium 滚动页面至元素可见的方法

    2022-06-01 14:01:05
  • 详解MySql中InnoDB存储引擎中的各种锁

    2024-01-13 10:40:32
  • python 星号(*)的多种用途

    2021-08-13 06:16:27
  • 机器学习经典算法-logistic回归代码详解

    2021-05-06 23:56:12
  • 使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤

    2022-03-03 10:04:54
  • 简单三步实现报表页面集成天气

    2024-04-25 13:08:16
  • ASP.NET Core Authentication认证实现方法

    2023-07-21 12:21:31
  • Python Django 数据库的相关操作详解

    2024-01-26 21:02:46
  • python动态参数用法实例分析

    2021-03-02 06:27:51
  • asp之家 网络编程 m.aspxhome.com