Python中defaultdict与dict的差异详情

作者:王卓越 时间:2023-10-02 19:39:29 

本文转自微信公众号:"算法与编程之美",

一、问题描述

collections模块中的defauldict使用时与dict有何不同,为何我们用dict中的key值不存在时会报错,而defaudict不会报错,下面做出解答。

二、解决方案

以解决遇到的问题用来解答。

代码示例:


import collections

//引用collections模块

dic=collections.defaultdict(int)

//利用模块中的defauldict定义一个字典

for num in range(10):

dic[num]+=1

//给字典赋值

print(dic)

输出:

defaultdict(<class 'int'>, {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1})

从代码中可以看出引用了collections模块中的defauldict()属性,定义了一个字典,并为字典赋值以及增添了key值。可以看出最初dic没有key值时,字典返回的值为1;同理如果直接用dict会产生什么结果呢?

代码示例:


dic=dict()

//定义一个字典

for num in range(10):

dic[num]+=1

//赋值

print(dic)

输出:

发生异常: KeyError

0

File "C:\Users\Hasee\Desktop\where2go-python-test\1906101031王卓越\类\ce_shi.py", line 81, in <module> dic[num]+=1

然而输出会出现报错,该错误是因为在dic()中找不到相应的key值,即在所定义的dic中找不到num值,但利用if条件语句也可以达到与defaultdict()一样的效果。

代码示例:


dic=dict()

for num in range(10):

if num not in dic:

dic[num]=0

//当dic中不存在num这个key值时,就添加num并赋值为0

dic[num]+=1

print(dic)

输出:

{0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1}

三、结语

通过上述代码及结果,得知当定义一个字典没有相应的key值时,defauldict()会在字典中添加这个key值并赋值为0,而直接使用dict()来定义则会报错:找不到相应的key值。但使用if语句来主动为key赋值,也能达到defaultdict()一样的效果。

标签:Python,defaultdict,dict
0
投稿

猜你喜欢

  • Windows下CMD执行Go出现中文乱码的解决方法

    2024-04-28 10:49:25
  • 浅谈webpack编译vue项目生成的代码探索

    2024-02-23 18:02:05
  • vue 代码压缩优化方式

    2024-04-09 10:44:46
  • 通过分析SQL语句的执行计划优化SQL

    2011-10-24 20:03:20
  • Python手动或自动协程操作方法解析

    2023-06-30 11:38:41
  • python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例

    2022-01-05 19:39:44
  • python 下 CMake 安装配置 OPENCV 4.1.1的方法

    2022-04-04 07:45:21
  • ASP+Access系统的安全隐患及对策

    2007-08-23 14:53:00
  • IDEA导入Git项目的方法

    2023-01-25 23:09:09
  • PYTHON绘制雷达图代码实例

    2021-12-17 01:33:58
  • 基于python实现双向链表

    2022-02-17 04:06:44
  • 关于Python中object类特殊方法的解释

    2023-08-31 22:19:24
  • javascript FAQ函数(提问+回复)

    2024-04-19 09:55:54
  • 深入了解MySQL的数据类型以及建库策略

    2008-12-17 16:16:00
  • 在python2.7中用numpy.reshape 对图像进行切割的方法

    2021-12-23 19:11:02
  • 5个常见的XHTML验证错误

    2010-01-15 20:24:00
  • 解决python打不开文件(文件不存在)的问题

    2021-10-15 02:39:46
  • 写一个Python脚本自动爬取Bilibili小视频

    2022-04-29 04:10:48
  • utf8_unicode_ci与utf8_general_ci的区别

    2010-03-03 15:54:00
  • Python定时从Mysql提取数据存入Redis的实现

    2024-01-22 01:31:39
  • asp之家 网络编程 m.aspxhome.com