标签:Python,defaultdict,dict
本文转自微信公众号:"算法与编程之美",
一、问题描述
在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()
一样的效果。
0
投稿
猜你喜欢
- 实例如下所示:import numpy as npW_val, b_val = sess.run([weights_tensor, bias
- 如何在线删除表或索引? <%Set conn1 = Server.CreateObject(&
- 目录房价数据分析数据简单清洗各区均价分析全市二手房装修程度分析各区二手房数量所占比比例热门户型均价分析总结房价数据分析数据简单清洗data.
- 目录process模块1、在python中启动一个子进程2、给子进程传递参数3、同时开多个子进程4、join的用法5、多进程之间的数据是否隔
- 为了找到matplotlib在两个点之间连线的方法真是费了好大功夫,本文主要介绍了 matplotlib绘制两点间连线的几种方法,
- 经常到这来抄抄改改代码,也贡献一个代码,主要是讨论研究用,没有封装可以进一步改进<!DOCTYPE html PUBLIC "
- ES在之前的博客已有介绍,提供很多接口,本文介绍如何使用python批量导入。ES官网上有较多说明文档,仔细研究并结合搜索引擎应该不难使用。
- 基础知识在学习该漏洞之前我们需要学习一下前置知识来更好的理解该漏洞的产生原因以及如何利用。 我们先来学习一下框架的基本信息以及反序列化漏洞的
- 前言:最近在接触利用python来写测试框架,本人也是个刚接触python,所以是个小菜鸟,今天开始,一点点的记录学习中的积累,方便以后的学
- 很多朋友问过我absolute与relative怎么区分,怎么用?我们都知道absolute是绝对定位,relative是相对定位,但是这个
- 制作初衷:外地开了票到公司后发现信息有错误,无法报销;公司的行政和财务经常在工作日被问及公司开票信息,影响心情和工作;引入相应的专业APP来
- 为了在一幅图像 f 的(x,y)位置寻找边缘的强度和方向,所选择的工具就是梯度,梯度使用向量来表示:该向量指出了图像 f 在位置(x,y)处
- 以下排序算法最终结果都默认为升序排列,实现简单,没有考虑特殊情况,实现仅表达了算法的基本思想。冒泡排序内层循环中相邻的元素被依次比较,内层循
- 1、如何统计序列中元素的出现频度实际案例:(1)某随机序列[12, 5, 6, 4, 6, 5, 5, 7, ...] 中找到出现次数最高的
- 一、匹配目标文件中所有以https?://开头,以.jpg|.png|.jpeg结尾的字符串二、尝试过程1) &n
- python版本:python 3.9 mutagen版本:1.46.0mutagen是一个处理音频元数据的pytho
- pytorch 库pytorch 本身具有载入cifar10等数据集的函数,但是载入的是3*200*200的张量,当碰到要使用灰度图像时,可
- 给一个例子 :# -*- coding: utf-8 -*-import matplotlib.pyplot as plt im
- OCR与Tesseract介绍将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR)。
- 如下所示:#coding=utf-8#读取图片 返回图片某像素点的b,g,r值import cv2import numpy as npimg