Python 3:何时使用字典,何时使用元组列表?

2023-11-22

I have id例如,监狱里的囚犯。每个囚犯都有一个名字。

我知道字典如何工作,我知道元组如何工作,我知道列表如何工作,但有时我看到正在使用字典,有时看到元组列表。在我的情况下我应该使用哪一个?

d = {
    1: "Mike",
    2: "Bob",
    3: "Tom"
}

vs

l = [
    (1, "Mike"),
    (2, "Bob"),
    (3, "Tom")
]

概括一下这个问题:我什么时候应该使用字典,什么时候应该使用元组列表,它们有什么好处?


当需要按顺序存储项目时,您应该使用列表。在这种情况下,唯一重要的是 ID 映射到名称。

字典是一种映射,这意味着键和值之间的关系不是对称的。例如,通过已知值获取键是很棘手的(并且在一般情况下并不总是可能),而通过元组中任何项的值过滤元组列表(或一组,就此而言)同样容易。

话虽如此,在选择数据结构时,考虑如何从中检索数据是有意义的。如果你能看到id and name作为类似于 C 的东西的相等部分struct(例如,您需要按其中任何一个进行搜索等)那么您最好使用元组或collections.namedtuple。您仍然可以根据需要将它们放入列表或集合中以保持有序。

But if id是一个“特殊”字段,用于检索有关对象的其余信息,并且保证它是唯一的(好吧,“ID”意味着它),并且您不需要内部顺序,并且需要恒定的时间随机访问——当然使用字典。

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

Python 3:何时使用字典,何时使用元组列表? 的相关文章

随机推荐

  • F# 中不可变

    我知道 F 中的变量默认是不可变的 但是 例如在 F 交互式中 gt let x 4 val x int 4 gt let x 5 val x int 5 gt x val it int 5 gt 所以 我将 4 分配给 x 然后将 5 分
  • R knit:是否可以在不同机器上使用缓存结果?

    问题已解决 详情请参阅答案 我想运行一些代码 使用knitr 在更强大的服务器上 然后也许有可能在我自己的笔记本电脑上进行一些小的更改 即使复制整个文件夹 本地重新编译时似乎也会重建缓存 有没有办法避免这种情况并实际使用缓存中的结果 更新
  • 使用视图模型与在视图本身中使用 @Binding 时如何使用绑定?

    State and Binding工作得很好SwiftUI 只要将所有视图的数据放入其自身内部 如下所示 struct ColorView View Binding public var isBlue Bool var body some
  • 解决 Django 1.9.2 中的 ValidationError: [u"'' 值的日期格式无效。它必须采用 YYYY-MM-DD 格式。"]?

    早些时候 我创建了两个字段并迁移了所有内容 之后我尝试添加三个字段title about birthdate进入模型 我创建了一个这样的模型 from future import unicode literals from django u
  • 一个 ASP.Net 页面中存在多个 reCAPTCHA

    是否可以在一种形式中添加多个 reCAPTCHAS 我尝试这样做 甚至给多个 reCAPTCHAS 不同的 ID 但是当我在浏览器中加载页面时 只显示其中一个 这是设计使然吗 我需要两个 reCAPTCHAS 因为一个用于登录 另一个用于注
  • 更改日期的打印格式而不将其转换为字符

    With a DateR中的对象 是否可以选择与默认不同的打印格式 Y m d 同时保持其Date班级 这format 函数将其转换回character string I start with a character string and
  • 防止 onbeforeunload 在任何情况下关闭页面

    我想防止浏览器在任何情况下或在其他情况下关闭页面 防止浏览器在以下情况下执行任何操作onbeforeunload叫做 这是我尝试过的代码 function var proxied window onbeforeunload window o
  • Mysql 创建具有多个外键的表,删除时设置为 null

    我正在尝试创建一个具有删除 更新约束的多个外键的数据库 但我收到错误代码 1005 其中包含以下 sql 脚本 CREATE TABLE Worker WorkerID smallint auto increment WorkerType
  • 如何使用 Renderscript 模糊效果而不出现伪影?

    背景 有很多地方 包括here 来展示如何使用 Renderscript 来模糊图像 如下所示 TargetApi VERSION CODES JELLY BEAN MR1 public static Bitmap renderScript
  • 使用 std430 限定符进行内存分配

    我正在使用与 SSAO 绑定的计算着色器 我在计算着色器中使用以下结构 struct Particle vec4 pAnds vec3 velocity float lifespan float age layout std430 bind
  • PHP 密码验证总是返回 false [重复]

    这个问题在这里已经有答案了 我正在使用 PHP 的密码哈希 API 来哈希并验证我正在构建的网站上的密码 但是每当我尝试验证我的密码时 它总是返回 false 我有一个 User 类 它在将密码插入数据库之前设置密码 public func
  • 如何启用表单上的所有控件?

    目前 我在启动时禁用了表单的大部分控件 因为在加载文件之前您无法使用它们 然而 一旦文件被加载 控件就应该被启用 我正在使用绑定 但我认为它们不是一个好的解决方案 其一 这是不必要的复杂性 其次 你不能对所有事情都使用绑定 例如 MenuS
  • 如何在python中使用Matlab的imresize

    我正在转移Matlab的imresize代码写入Python 我找到了 scipy 的imresize 但我从 Matlab 得到了不同的结果 如何通过python得到与Matlab相同的结果 Python scipyimresize fr
  • “脏话”过滤器[关闭]

    Closed 这个问题是无关 目前不接受答案 不是很技术性 但是 我必须在我们正在开发的新网站中实现坏词过滤器 所以我需要一个 好 坏词列表来为我的数据库提供 任何提示 方向 用谷歌环顾四周我找到了这个一个 这只是一个开始 但仅此而已 是的
  • Cocoa Core Data 新手指南

    我是众多热衷于尝试 Mac OS X 开发的未经洗礼的 NET 开发人员之一 目前我正在尝试弄清楚 Cocoa 的各种元素 但在核心数据上有点卡住了 我注意到 Web 上提供的大多数文档和资源都涉及广泛的端到端教程 从模型 生成类 基于文档
  • 如何在 pandas DataFrame 中存储公式而不是值

    是否可以像使用 Excel 电子表格一样使用 pandas DataFrame 例如 通过在列中输入公式 以便当其他列中的变量发生变化时 该列中的值会自动更改 就像是 a b c 2 3 a b 所以当我更新 2 或 3 时 该列c也会自动
  • 如何将一个字符串与另一个字符串进行比较,其中字符串之间有空格

    如何比较这两个字符串 val a fit bit versa val b fitbit 另一个例子 val a go pro hero 6 val b gopro 另一个例子 val a hero go pro 6 val b gopro
  • 将 RecyclerView CardView 单击的项目数据传递给 Activity

    我有一个关于将点击的卡片视图数据传递给活动的问题 这里是完整的故事 我有一个名为 Details 的 Activity 它的布局 Title 和 Description 中包含 2 个 TextView 我设置了一个片段 tab 1 其中包
  • 什么是CSS滚动行为属性?

    我最近注意到一个scroll behavior我可以在 css 中指定的属性 它只能有 2 个属性 inherit and initial 我以前从未听说过 见过它 所以我尝试看看它 问题是所有的链接都在解释不同的事情overflow财产
  • Python 3:何时使用字典,何时使用元组列表?

    I have id例如 监狱里的囚犯 每个囚犯都有一个名字 我知道字典如何工作 我知道元组如何工作 我知道列表如何工作 但有时我看到正在使用字典 有时看到元组列表 在我的情况下我应该使用哪一个 d 1 Mike 2 Bob 3 Tom vs