Python defaultdict 和 lambda

2024-01-10

在别人的代码中我读到了以下两行:

x = defaultdict(lambda: 0)
y = defaultdict(lambda: defaultdict(lambda: 0))

由于defaultdict的参数是默认工厂,我认为第一行意味着当我为不存在的键k调用x[k]时(例如v=x[k]这样的语句),键值对(k ,0) 将自动添加到字典中,就像首先执行语句 x[k]=0 一样。我对么?

那么 y 呢?看起来默认工厂会创建一个默认值为0的defaultdict。但这具体意味着什么呢?我尝试在 Python shell 中使用它,但无法弄清楚它到底是什么。


我认为第一行意味着当我打电话时x[k]对于不存在的密钥k(例如这样的声明v=x[k]), 键值对(k,0)会自动添加到字典中,就好像语句一样x[k]=0首先被执行。

这是正确的。这样写比较地道

x = defaultdict(int)

如果是y,当你这样做时y["ham"]["spam"], 钥匙"ham"被插入y如果它不存在。与之相关的值变成defaultdict其中"spam"自动插入值为0.

I.e., y是一种“两层”defaultdict. If "ham" not in y,然后评估y["ham"]["spam"]就像做

y["ham"] = {}
y["ham"]["spam"] = 0

就普通而言dict.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python defaultdict 和 lambda 的相关文章

随机推荐

  • R - 将 data.frame 转换为多维矩阵

    来自 data frame 的示例 x data frame c 1 1 2 2 3 3 c 1 2 1 2 1 2 c 1 1 1 2 2 2 c 12 14 22 24 34 28 colnames x c Store Dept Yea
  • 将 Google Analytics 添加到 Rails 4.2 应用程序

    我有一个使用 Heroku 部署的 Rails 4 2 应用程序 并且尝试向其中添加 Google Analytics 但是 Google Analytics 没有获取任何会话 有什么建议为什么以及如何解决这个问题吗 CODE app la
  • 在办公室 LAN 上设置 xampp 服务器

    我希望在小型办公室内使用 xampp 设置服务器 我当然会保护 xampp 但为了使我的 web 应用程序可供网络上的其他 4 台电脑使用 我是否只创建一个虚拟主机 有没有办法确保只能在局域网上访问Web应用程序 当前设置包括 4 台计算机
  • OpenGL 旋转

    我正在尝试在 OpenGL 中进行简单的旋转 但一定没有抓住重点 我并不是在寻找具体的修复方法 而是在寻找快速解释或更普遍地解释 OpenGL 旋转的链接 目前我有这样的代码 glPushMatrix glRotatef 90 0 0 0
  • 使用 Hadoop MapRed 排序

    Well 我想知道如何在reduce 任务之后更改简单WordCount 程序的排序顺序 我已经制作了另一个按值排序而不是按键排序的映射 但它仍然按升序排序 有没有一种简单的方法可以做到这一点 更改排序顺序 谢谢 韦洛佐 如果您使用的是旧版
  • Android Work Manager - Work Manager 是否能 100% 确保后台执行完成?

    根据我从文档中读到的内容https developer android com topic libraries architecture workmanager https developer android com topic libra
  • 如何限制pyqt中QLineEdit中的用户输入

    我有一个QLineEdit我想限制QLineEdit仅接受整数 它应该像输入掩码一样工作 但我不想用inputmask 因为如果用户点击QLineEdit光标将位于鼠标单击的位置 用户需要导航到 0 位置并输入他想要的内容 有没有什么替代方
  • 如何在 SQL Server 2012 中设置每周自动备份?

    请建议我如何在 SQL Server 2012 中设置自动数据库备份 我需要对 SQL Server 中的所有数据库 目前仅包含 3 个 进行每周自动备份 该备份在每周五 0100 点 凌晨 1 点 运行 这些备份文件 bak 应放置在 E
  • Swift NSScriptCommand 执行默认实现

    我在 Objective C 中使用了这段代码 implementation KDOrderInfo id performDefaultImplementation NSString theRequest self directParame
  • 使用 MailKit 和 Gmail OAuth 发送邮件

    我正在尝试创建一个应用程序 在客户购买时向他们发送电子邮件 我们有自己的 GMail 帐户 我将用它来发送电子邮件 我已经设置了我的应用程序并在 Google API 控制台中创建了凭据 我发现这个问题 https github com j
  • 如何调用API(Oauth 1.0)?

    我试图调用这个API Oauth1 0标准 https appcenter intuit com api v1 Connection Reconnect https appcenter intuit com api v1 Connectio
  • C/C++宏嵌套替换逻辑

    我正在尝试实现 C C 兼容的宏处理 我可以正确处理许多极端情况 包括此处讨论的情况 了解宏间接扩展自身时 C 预处理器的行为 https stackoverflow com questions 66593868 understanding
  • UITableView 单元格重叠

    我正在实现一个带有部分索引的 tableView 每当任何特定部分中的行超过一行时 我的 tableViewCell 就会重叠 这是我的代码 NSInteger numberOfSectionsInTableView UITableView
  • Asp.net MVC 编辑器出现“类型‘System.Object’是在未引用的程序集中定义的”错误

    using Html BeginForm Index Employees FormMethod Post new encType multipart form data name EmployeeForm table class table
  • 在 glass 应用程序中创建“ok glass”样式菜单

    我刚刚开始为 Google Glass 进行开发 并且我知道 GDK 相当新 所以这可能还不可能 但我正在尝试 与 okay glass 屏幕上的 拨打电话 提示或 发送消息至 提示一样 我希望我的应用程序在您使用语音选择时具有更多语音选择
  • 如何使用 ASP.NET MVC、WebAPI 和 MEF 正确确定每个请求的组合范围

    我最近使用各种资源 包括此 SO 答案 将 MEF 添加到 MVC WebAPI 应用程序如何将 MEF 与 ASP NET MVC 4 和 ASP NET Web API 集成 https stackoverflow com questi
  • 自动将 vs2005 调试器附加到子进程

    我有一个在 Visual Studio 2005 中构建的主要 C 应用程序 名为 A exe 它生成一个子进程 B exe 我通过按 F5 在调试器中运行进程 A 我知道在进程 B 中命中断点的唯一方法是等待 A 启动它 然后运行 调试
  • Android 找不到类“android.app.job.JobScheduler”

    我在使用选项构建 apk 文件时不断收到此错误minifyEnabled true 应用程序构建过程和安装已成功 但无法启动并出现此错误 我已经厌倦了寻找班级图书馆 我对Android应用程序开发不太熟悉 请帮助我 错误堆栈跟踪 05 11
  • Spark Streaming:输入速率和文件流 [0] 始终具有“平均:0.00 个事件/秒”

    我正在使用 Spark 1 5 2 运行 代码如下 它定期正确打印计数 但在 Spark Streaming UI 中 输入速率和文件流 0 始终具有 平均 0 00 个事件 秒 注意 每个文件包含一行 其中包含 json 字符串 我也尝试
  • Python defaultdict 和 lambda

    在别人的代码中我读到了以下两行 x defaultdict lambda 0 y defaultdict lambda defaultdict lambda 0 由于defaultdict的参数是默认工厂 我认为第一行意味着当我为不存在的键