- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
标题说明了一切:
是否有任何理由使用 dict 而不是 defaultdict ?
我能想到的唯一理由就是“我真的不需要”。但是然后我会问是否有任何理由不将 dict 替换为 defaultdict。
可能的原因可能是:
但我不认为性能损失如此严重,因为您只需要检查是否已经存在一个新值,该值在 O(1) 中摊销。
我也想不出测试可能变得更加困难的例子。 (不过我不是很有经验)
最佳答案
不使用defaultdict
的原因有很多:
defaultdict
填充一个专门的用例,您希望在缺少键时为您自动创建值,并且可以使用工厂功能,无需访问正在插入的 key 。
请注意,异常不只是用来标记程序员的错误。异常是 Python 语言的一个非常强大的部分,其用途远不止编码错误。如果您的数据通常不需要新 key ,那么使用异常处理(请求宽恕)比每次都测试 key (请求许可)更快。
参见 Python Forgiveness vs. Permission and Duck Typing在 Progammers 上进行比较。
关于python - 有什么理由使用 dict 而不是 defaultdict 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19666783/
您好,我希望我的下一个输出(在本例中就是字母)在上一个输出之后输出 8 个空格。这适用于第一个字符,但之后的 printf 语句不起作用。它在第一个 printf 语句之后立即打印,我试图将其设置为
我想知道制作 std::list<>::splice 背后的基本原理是什么使引用被拼接到新容器中的子序列的迭代器无效。这对我来说有点不合逻辑,尤其是考虑到标准 std::container::swap
谁能告诉我为什么我应该使用 Azure Function 输出绑定(bind)(例如 SendGrid 或 Twilio)而不是仅仅在我的 C# 函数中显式使用适当的 SDK(例如 Sendgrid
我们在当前项目中使用 React 和 TypeScript,我遇到了以下行为。 import React, { Component } from 'react'; 我将上面的行替换为下面的行,因为它似
我是一名优秀的程序员,十分优秀!