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()
一样的效果。
猜你喜欢
- 1.安装anaconda(anaconda内置python在内的许多package,所以不用另外下载python)可以点击下面的清华开源软件
- <%'解析一个xml文件的公用函数集合dim document'装载一个xml文档,函数名Loaddocument(文
- py文件为utf-8格式#!/usr/bin/env python# -*- coding:utf-8 -*-a = "syste
- Zabbix的简单安装配置说明1、在已有的LAMP或者LNMP的基础上安装zabbix,安装一些依赖包:yum -y install mys
- 摘要:python的设计核心原则就是简洁——在这种原则的指导下,诞生了lambda表达式和偏函数:二者都让函数调用变得简洁。本文主要为你介绍
- 将 numpy 数组存入文件,有多种文件类型可供选择,对应地就有不同的方法来读写。下面我将介绍读写 numpy 的三类文件:txt 或者 c
- tkinter获取复选框(Checkbutton)的值定义GUI:from tkinter import *# 初始化Tk()myWindo
- 1、如何统计序列中元素的出现频度实际案例:(1)某随机序列[12, 5, 6, 4, 6, 5, 5, 7, ...] 中找到出现次数最高的
- 图像的阈值处理一般使得图像的像素值更单一、图像更简单。阈值可以分为全局性质的阈值,也可以分为局部性质的阈值,可以是单阈值的也可以是多阈值的。
- “深入认识Python内建类型”这部分的内容会从源码角度为大家介绍Python中各种常用的内建类型。
- ASP通过XMLDom在服务器端操作XML文件的主要方法和实现对于小数据量,xml文件在检索更新上于ACCESS有很多优势。我曾经测试过不用
- 一、什么是ttkbootstrap?官方文档 [较慢]:https://ttkbootstrap.readthedocs.io/en/lat
- 一、在windows环境下修改pip镜像源的方法(以python3.5为例)(1):在windows文件管理器中,输入 %APPDATA%(
- 1. 下载darknet源码在命令窗口(terminal)中进入你想存放darknet源码的路径,然后在该路径下输入依次输入以下命令:git
- 项目介绍:Golang100行代码实现高并发聊天室,其中实现的功能有:上下线广播,私聊,用户改名,超时强踢,在线用户检测等在开始项目前,我们
- 安装requests库之前我们需要先看一下电脑上有没有pip,可以在cmd中输入pip list查看,若出现以下内容则电脑已安装pip,否则
- debug的时候,有时希望打印某些东西,但是如果代码段刚好在一个循环或者是其他会被执行很多次的部分,那么用来print的语句也会被执行很多次
- 网络爬虫抓取特定网站网页的html数据,但是一个网站有上千上万条数据,我们不可能知道网站网页的url地址,所以,要有个技巧去抓取网站的所有h
- 在网络中传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送,令牌桶算法就实现了这个功能, 可控制发送到网络上
- 本段源码可以学习的地方:1. 考虑到效率问题,可以通过上下文的机制,在属性被访问的时候临时构建;2. 可以重写一些魔术方法,比如 __new