当前位置: 首页 > news >正文

【Python 语法】collections 模块的字典类 defaultdict

    • 默认字典 (`defaultdict`) 的语法
    • `defaultdict` 的常见应用场景
      • 1. 计数
      • 2. 分组
      • 3. 嵌套字典

defaultdict 是 Python 中 collections 模块提供的一个字典类,它和普通字典( dict)的主要区别在于 提供了一个默认值,可以避免在访问字典中不存在的键时抛出 KeyError 异常。

  • defaultdictdict 的一个变种,它通过 default_factory 自动为不存在的键提供默认值,避免了 KeyError 异常。
  • 它的工厂函数(default_factory)可以是 intlistsetdict 等。
  • 在需要计数、分组、或者处理嵌套数据结构时,defaultdict 能让代码更加简洁、清晰。

默认字典 (defaultdict) 的语法

defaultdict 的基本语法如下:

from collections import defaultdict# 创建一个 defaultdict
d = defaultdict(default_factory)
  • default_factory 是一个工厂函数,用来为不存在的键提供默认值。如果不指定,defaultdict 会默认返回 None
  • default_factory 可以是任何返回值的函数,比如 int()(返回 0)、list()(返回空列表)、dict()(返回空字典)等。

defaultdict 的常见应用场景

1. 计数

  • 使用 int 作为 default_factory,可以非常方便地进行计数(例如,统计字符串中各个字符的频率)。
from collections import defaultdicttext = "hello world"
count = defaultdict(int)for char in text:count[char] += 1print(count)
# 输出: defaultdict(<class 'int'>, {'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1})

2. 分组

  • 使用 listset 作为 default_factory,可以方便地将数据 按某种标准分组
from collections import defaultdictitems = [('a', 1), ('b', 2), ('a', 3), ('b', 4), ('c', 5)]
grouped = defaultdict(list)for key, value in items:grouped[key].append(value)print(grouped)
# 输出: defaultdict(<class 'list'>, {'a': [1, 3], 'b': [2, 4], 'c': [5]})

3. 嵌套字典

  • 使用 dict 作为 default_factory,可以轻松创建嵌套字典结构,避免手动初始化每一层。
from collections import defaultdictnested_dict = defaultdict(lambda: defaultdict(int))# 向字典中添加嵌套元素
nested_dict['a']['x'] = 10
nested_dict['a']['y'] = 20
nested_dict['b']['x'] = 30print(nested_dict)
# 输出: defaultdict(<function <lambda> at 0x7fc7f08d90d0>, {'a': defaultdict(<class 'int'>, {'x': 10, 'y': 20}), 'b': defaultdict(<class 'int'>, {'x': 30})})

相关文章:

【Python 语法】collections 模块的字典类 defaultdict

默认字典 (defaultdict) 的语法defaultdict 的常见应用场景1. 计数2. 分组3. 嵌套字典 defaultdict 是 Python 中 collections 模块提供的一个字典类&#xff0c;它和普通字典&#xff08; dict&#xff09;的主要区别在于 提供了一个默认值&#xff0c;可以避免在访问字典中…...

《论系统需求分析方法》写作心得 - 系统分析师

系统需求分析方法论述 一、项目概述及本人职责 本人曾参与一项企业级客户关系管理系统&#xff08;CRM&#xff09;的开发项目&#xff0c;担任系统分析师的角色。该项目旨在为企业提供一个集客户信息管理、销售过程跟踪、客户服务支持于一体的综合管理平台&#xff0c;以提升…...

Jupyter里面的manim编程学习

1.Jupyterlab的使用 因为我之前一直都是使用的vscode进行manim编程的&#xff0c;但是今天看的这个教程使用的是Jupyter&#xff0c;我也很是好奇这个manim在Jupyter这样的交互式下面会生成怎么样的效果&#xff0c;所以今天尝试了jupyter&#xff0c;并且对于两个进行比较和说…...

Python之装饰器二 带参数的装饰器

前言一、带参数的装饰器二、在装饰器里面传入参数总结 前言 暂无 一、带参数的装饰器 我们知道&#xff0c;不带参数的装饰其实就是在函数的头上添加装饰器时放一个名称&#xff0c;这种写法就默认了装饰器函数调的是被装饰函数自己&#xff0c;换句话说就是&#xff0c;大家…...

rk3588/3576板端编译程序无法运行视频推理

图片推理可以&#xff0c;但是视频不行&#xff0c;运行视频推理报错&#xff1a;segment fault. 我遇到的问题原因是ffmpeg安装有问题&#xff0c;可以先在板端运行&#xff1a;ffmpeg -version ffmpeg version 4.2.4-1ubuntu1.0firefly6 Copyright (c) 2000-2020 the FFmpe…...

静态库与动态库区别

生成方式 静态库&#xff1a;生成静态库时&#xff0c;源代码编译后生成目标文件&#xff08;.o或.obj&#xff09;&#xff0c;然后将这些目标文件打包成一个静态库文件&#xff08;如&#xff1a;.lib或.a&#xff09;。 动态库&#xff1a;生成动态库时&#xff0c;源代码编…...

鸿蒙-Canvas-图片滑动验证

文章目录 过程绘制形状方式详细解释定义变量布局整图Canvas需要滑动的形状 需要处理图片的方式处理抠图绘制抠出来的图 总结 群里有朋友问图片滑块验证码怎么做&#xff0c;就是一张图上扣出来一块&#xff0c;然后拖动这一小块完成拼图。 第一个想法就是偷懒一下&#xff1a;直…...

Python应用算法之贪心算法理解和实践

一、什么是贪心算法&#xff1f; 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种简单而高效的算法设计思想&#xff0c;其核心思想是&#xff1a;在每一步选择中&#xff0c;都采取当前状态下最优的选择&#xff08;即“局部最优解”&#xff09;&#xff0c;希望通…...

网络运维学习笔记 017HCIA-Datacom综合实验01

文章目录 综合实验1实验需求总部特性 分支8分支9 配置一、 基本配置&#xff08;IP二层VLAN链路聚合&#xff09;ACC_SWSW-S1SW-S2SW-Ser1SW-CoreSW8SW9DHCPISPGW 二、 单臂路由GW 三、 vlanifSW8SW9 四、 OSPFSW8SW9GW 五、 DHCPDHCPGW 六、 NAT缺省路由GW 七、 HTTPGW 综合实…...

C++(17):为optional类型构造对象

C++(17):optional,多了一个合理的选择_c++17 max-CSDN博客 介绍了optional做为函数返回值的一种方式 其实optional也可以作为对象来使用 #include &...

Maven导入hutool依赖报错-java: 无法访问cn.hutool.core.io.IORuntimeException 解决办法

欢迎大家来到我的博客~欢迎大家对我的博客提出指导&#xff0c;有错误的地方会改进的哦~点击这里了解更多内容 目录 一、报错二、解决办法 一、报错 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-captcha</artifactId> </de…...

Simulink库浏览器中有大量的模型组件工具箱介绍

Simulink库浏览器中有大量的模型组件工具箱&#xff0c;包括Simulink工具箱、Autosar工具箱、电机控制工具箱等&#xff0c;其中Simulink工具箱包含了几十个的子模块&#xff0c;这里介绍下这些子模块的功能&#xff0c;帮助读者全面的了解这些功能模块&#xff0c;在今后的模型…...

从0到1:固件分析

固件分析 0x01 固件提取 1、从厂商官网下载 例如D-link的固件&#xff1a; https://support.dlink.com/resource/products/ 2、代理或镜像设备更新时的流量 发起中间人攻击MITM #启用IP转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward#配置iptables&#xff0c;将目…...

模电知识点总结(6)

1.选取频率高于1000Hz的信号时&#xff0c;可选用高通滤波器&#xff1b;抑制50Hz的交流干扰时&#xff0c;可选用带阻滤波器如果希望抑制500Hz以下的信号&#xff0c;可选用高通滤波器。 2.有用信号频率高于1000Hz&#xff0c;可选用高通滤波器&#xff1b;希望抑制50Hz的交流…...

【Java学习】多态

目录 一、方法相同 二、方法重写 1.概念 2.条件 三、向上转型 1.概念 2.方式 四、方法绑定 五、多态 一、方法相同 方法相同要求方法名相同、参数列表相同、返回值类型相同(与两方法修饰的访问限定符相不相同、静态非静态状态相不相同无关)&#xff0c;而且在子类与父…...

Oracle 深入理解Lock和Latch ,解析访问数据块全流程

Oracle 锁机制介绍 根据保护对象的不同&#xff0c;单实例Oracle数据库锁可以分为以下几大类&#xff1a; DML lock&#xff08;data locks&#xff0c;数据锁&#xff09;&#xff1a;用于保护数据的完整性&#xff1b; DDL lock&#xff08;dictionary locks&#xff0c;字典…...

什么是事务?并发事务引发的问题?什么是MVCC?

文章目录 什么是事务&#xff1f;并发事务引发的问题&#xff1f;什么是MVCC&#xff1f;1.事务的四大特性2.并发事务下产生的问题&#xff1a;脏读、不可重复读、幻读3.如何应对并发事务引发的问题&#xff1f;4.什么是MVCC&#xff1f;5.可见性规则&#xff1f;参考资料 什么…...

【JavaEE进阶】MyBatis通过注解实现增删改查

目录 &#x1f343;前言 &#x1f340;打印日志 &#x1f334;传递参数 &#x1f38b;增(Insert) &#x1f6a9;返回主键 &#x1f384;删(Delete) &#x1f332;改(Update) &#x1f333;查(Select) &#x1f6a9;起别名 &#x1f6a9;结果映射 &#x1f6a9;开启驼…...

Uptime Kuma实现业务接口自定义逻辑监控

背景 在现代分布式架构中,业务系统通常由多个微服务组成,微服务之间通过接口进行数据交互。为了确保业务的正常运行,我们需要对这些接口进行监控,及时发现并处理异常情况。然而,由于业务数据接口的复杂性,通用的监控方式往往难以满足需求,需要自定义逻辑来判断接口数据是否异常…...

基于 JavaWeb 的 Spring Boot 调查问卷管理系统设计和实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...

HTMX最佳实践:如何利用awesome-htmx构建企业级应用

HTMX最佳实践&#xff1a;如何利用awesome-htmx构建企业级应用 【免费下载链接】awesome-htmx Awesome things about htmx 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-htmx awesome-htmx是一个全面的资源集合&#xff0c;汇集了关于htmx的文章、工具、视频和…...

CTFshow - Misc图片隐写实战:从文件头到数据块的秘密

1. 图片隐写术入门&#xff1a;从文件头开始 第一次接触CTF的Misc图片隐写题时&#xff0c;我完全摸不着头脑。直到遇到那道修改文件后缀名的题目&#xff0c;才恍然大悟——原来图片文件头里藏着这么多秘密。PNG文件的"89 50 4E 47"就像身份证号&#xff0c;JPG的&q…...

Virtuoso ADE脚本进阶:一键参数化扫描并绘制gmid设计曲线簇(含OCEAN脚本修改指南)

Virtuoso ADE脚本进阶&#xff1a;一键参数化扫描并绘制gmid设计曲线簇&#xff08;含OCEAN脚本修改指南&#xff09; 在模拟电路设计中&#xff0c;gmid&#xff08;gm/Id&#xff09;方法已经成为现代CMOS设计的重要工具。这种方法通过将晶体管的跨导gm与漏电流Id的比值作为核…...

上了一堆MES、ERP,车间反而更乱了?APS智能排产如何破解“系统孤岛”困局

很多老板都有这样的困惑&#xff1a;这些年钱没少花&#xff0c;上了ERP管财务&#xff0c;上了MES管车间&#xff0c;最近还引进了几个AI做质检和预测&#xff0c;但为什么管理反而更累了&#xff1f;数据对不上&#xff0c;部门扯皮多了&#xff0c;甚至出现了“系统越多&…...

Honey Select 2画质飞跃攻略:DHH、Graphics插件深度对比与材质编辑器进阶调校

Honey Select 2画质飞跃攻略&#xff1a;DHH、Graphics插件深度对比与材质编辑器进阶调校 当默认画质无法满足你对虚拟世界的视觉期待时&#xff0c;Honey Select 2的模组生态提供了从基础优化到专业级渲染的全套解决方案。本文将带你深入两款核心画质插件的技术内核&#xff0…...

告别命令手册:用Python脚本自动化你的Android 13 CTS/GTS测试流程

告别命令手册&#xff1a;用Python脚本自动化你的Android 13 CTS/GTS测试流程 在Android生态系统的质量保障体系中&#xff0c;CTS&#xff08;兼容性测试套件&#xff09;和GTS&#xff08;Google移动服务测试套件&#xff09;是确保设备兼容性的核心验证工具。然而&#xff0…...

告别pip依赖地狱:从ERROR到成功安装的实战解决指南

1. 当pip开始"闹脾气"&#xff1a;依赖地狱的日常写照 刚接手一个新项目&#xff0c;满心欢喜地准备搭建开发环境&#xff0c;结果pip install命令刚敲下去&#xff0c;屏幕上就蹦出一串刺眼的红色ERROR。这种场景对于Python开发者来说简直像每天喝咖啡一样常见。我管…...

VSCode量子调试器始终断点失效?揭秘微软官方未公开的launch.json量子模拟器适配参数(含QDK v0.29.389242兼容性清单)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;VSCode量子调试器断点失效现象全景透视 VSCode 量子调试器&#xff08;如 Q# extension 配合 Quantum Development Kit&#xff09;在调试 Shor 算法或 Grover 搜索等量子程序时&#xff0c;常出现断点…...

打卡信奥刷题(3161)用C++实现信奥题 P7809 [JRKSJ R2] 01 序列

P7809 [JRKSJ R2] 01 序列 题目描述 给你一个长度为 nnn 的 010101 序列 a1∼na_{1\sim n}a1∼n​&#xff0c;接下来有两种询问共 mmm 次&#xff1a; 1 l r&#xff0c;表示询问 lll 到 rrr 区间的最长不下降子序列的长度。2 l r&#xff0c;表示询问 lll 到 rrr 区间的最长上…...

为什么我用了六年记账App 最后还是选了一个“不起眼“的网页工具

这篇文章可能会得罪一些人&#xff0c;但我觉得有必要说实话。我用过的记账工具大概有十几个&#xff0c;花了六年在这件事上&#xff0c;花时间、花钱、花精力配置。最后发现&#xff0c;那些大公司做的、宣传做得很大的记账工具&#xff0c;有几个集体性的毛病&#xff0c;而…...