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:何时使用字典,何时使用元组列表? 的相关文章

  • 在 Python 中将列表元素作为单独的项目返回

    Stackoverflow 的朋友们大家好 我有一个计算列表的函数 我想单独返回列表的每个元素 如下所示 接收此返回的函数旨在处理未定义数量的参数 def foo my list 1 2 3 4 return 1 2 3 4 列表中的元素数
  • matplotlib 图中点的标签

    所以这是一个关于已发布的解决方案的问题 我试图在我拥有的 matplotlib 散点图中的点上放置一些数据标签 我试图在这里模仿解决方案 是否有与 MATLAB 的 datacursormode 等效的 matplotlib https s
  • 更好地相当于这个疯狂的嵌套 python for 循环

    for a in map for b in map a for c in map b for d in map c for e in map d print a b c d e 上面的代码用于创建图中一定长度的所有路径 map a 表示从
  • 矩形函数的数值傅里叶变换

    本文的目的是通过一个众所周知的分析傅里叶变换示例来正确理解 Python 或 Matlab 上的数值傅里叶变换 为此 我选择矩形函数 这里报告了它的解析表达式及其傅立叶变换https en wikipedia org wiki Rectan
  • GUI(输入和输出矩阵)?

    我需要创建一个 GUI 将数据输入到矩阵或表格中并读取此表单数据 完美的解决方案是限制输入表单仅允许float 例如 A 1 02 0 25 0 30 0 515 0 41 1 13 0 15 1 555 0 25 0 14 1 21 2
  • 如何使用 Selenium 和 ChromeDriver 解决 TypeError: 'module' object is not callable 错误 [重复]

    这个问题在这里已经有答案了 代码试验 from selenium import webdriver from selenium webdriver chrome options import Options as Chromeoptions
  • Python 3:将字符串转换为变量[重复]

    这个问题在这里已经有答案了 我正在从 txt 文件读取文本 并且需要使用我读取的数据之一作为类实例的变量 class Sports def init self players 0 location name self players pla
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • 如何将 ascii 值列表转换为 python 中的字符串?

    我在 Python 程序中有一个列表 其中包含一系列数字 这些数字本身就是 ASCII 值 如何将其转换为可以在屏幕上回显的 常规 字符串 您可能正在寻找 chr gt gt gt L 104 101 108 108 111 44 32 1
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • 如何使用 AWS Lambda Python 读取 AWS S3 存储的 Word 文档(.doc 和 .docx)文件内容?

    我的场景是 我尝试使用 python 实现从 Aws Lambda 读取 AWS 存储的 S3 word 文档 doc 和 docx 文件内容 下面的代码是我使用的 我的问题是我可以获取文件名 但无法读取内容 def lambda hand
  • python 中的“槽包装器”是什么?

    object dict 和其他地方的隐藏方法设置为这样的
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • 每当使用 import cv2 时 OpenCV 都会出错

    我在终端上使用 pip3 install opencv contrib python 安装了 cv2 并且它工作了 但是每当我尝试导入 cv2 或运行导入了 cv2 的 vscode 文件时 在 python IDLE 上它都会说 Trac
  • 制作一份 Python 文档的 PDF 文件

    Python 官方网站提供 PDF 文档下载 但它们是按章节分隔的 我下载了源代码并构建了 PDF 文档 这些文档也是单独的 PDF 我怎么能够从源代码中的 Makefile 构建一个 PDF 文件 我认为这样阅读起来会更方便 如果连接单独
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp
  • 如何在 Flask 中的视图函数/会话之间传递复杂对象

    我正在编写一个 Web 应用程序 当 且仅当 用户登录时 该应用程序从第三方服务器接收大量数据 这些数据被解析为自定义对象并存储在list 现在 用户在应用程序中使用这些数据 调用不同的视图 例如发送不同的请求 我不确定什么是最好的模式在视
  • 如何将Python3设置为Mac上的默认Python版本?

    有没有办法将 Python 3 8 3 设置为 macOS Catalina 版本 10 15 2 上的默认 Python 版本 我已经完成的步骤 看看它安装在哪里 ls l usr local bin python 我得到的输出是这样的
  • JSON:TypeError:Decimal('34.3')不是JSON可序列化的[重复]

    这个问题在这里已经有答案了 我正在运行一个 SQL 查询 它返回一个小数列表 当我尝试将其转换为 JSON 时 出现类型错误 查询 res db execute SELECT CAST SUM r SalesVolume 1000 0 AS
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size

随机推荐

  • 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