初始化 TypedDict 并稍后填充键和值

2024-03-17

我有一个字典,其中键和值的类型是固定的。我想定义 a 中的类型TypedDict如下:

class MyTable(TypedDict):
    caption: List[str]
    header: List[str]
    table: pd.DataFrame
    epilogue: List[str]

我有返回一个的函数MyTable。我想先定义一个空的(Typed)dict并填写键和值。

def returnsMyTable():
    result = {}
    result['caption'] = ['caption line 1','caption line 2']
    result['header'] = ['header line 1','header line 2']
    result['table'] = pd.DataFrame()
    result['epilogue'] = ['epilogue line 1','epilogue line 2']
    return result

这里 MyPy 抱怨需要结果的类型注释。我尝试了这个:

result: MyTable = {}

但随后 MyPy 抱怨密钥丢失了。同样,如果我定义键但将值设置为None,它抱怨值的类型不正确。

是否有可能初始化一个TypedDict首先作为一个空字典,然后填充键和值?这docs https://mypy.readthedocs.io/en/stable/type_inference_and_annotations.html#explicit-types-for-collections似乎表明确实如此。

我想我可以首先将值定义为变量并组装MyTable稍后,但我正在处理遗留代码,我正在向其中添加类型提示。所以我想尽量减少工作量。


您可能想要的是设置总体性,但我会三思而行使用它。

Quoting the PEP https://www.python.org/dev/peps/pep-0589/#totality

默认情况下,所有键都必须出现在 TypedDict 中。可以通过指定总体性来覆盖它。以下是如何使用基于类的语法来执行此操作:

class MyTable(TypedDict, total=False):
    caption: List[str]
    header: List[str]
    table: pd.DataFrame
    epilogue: List[str]

result: MyTable = {}
result2: MyTable = {"caption": ["One", "Two", "Three"]}

正如我所说,请三思而后行。总计TypedDict给你一个很好的保证,所有的项目都会存在。也就是说,因为 MyPy 不允许结果存在而没有“标题”,所以您可以安全地调用cap = result["caption"].

如果你设置total=False,那么这个保证就会消失。假设您正在使用您的MyTable比您制造的更常见,在使用时获得额外的安全保证可能是一笔不错的交易。

就我个人而言,我会保留total=False对于创建代码有时确实遗漏了某些内容的情况,并且任何使用它的代码都必须处理该问题。如果只是需要几行来初始化,我会这样做:

def returnsMyTable():
    result = {}
    result_caption = ['caption line 1','caption line 2']
    result_header = ['header line 1','header line 2']
    result_table = pd.DataFrame()
    result_epilogue = ['epilogue line 1','epilogue line 2']
    result = {
        "caption": result_caption, 
        "header": result_header, 
        "table": result_table, 
        "epilogue": result_epilogue
    }
    return result
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初始化 TypedDict 并稍后填充键和值 的相关文章

  • AttributeError:'function'对象在pandas中没有属性'bar'

    我有一个 pandas 数据框 它是 pandas 数据框类型 如下所示 type df Out 176 pandas core frame DataFrame 但是 当我尝试在此数据框上使用任何绘图函数 如条形图 时 会出现如下错误 df
  • 为神经网络打乱两个 numpy 数组

    我有两个 numpy 数组用于输入数据 X 和输出数据 y X np array 2 3 sample 1 x 16 4 dtype float sample 2 x y np array 1 0 sample 1 y 0 1 dtype
  • Python设置1和True的解释

    在 IPython 3 交互式 shell 中 In 53 set2 1 2 True hello In 54 len set2 Out 54 3 In 55 set2 Out 55 hello True 2 是因为 1 和 True 得到
  • 在 Jupyter Notebook 中设置环境变量的不同方法

    在某些情况下 我在 Windows 10 计算机上使用 Jupyter 笔记本 我想通过设置环境变量 GOOGLE APPLICATION CREDENTIALS 来向 GCP 进行身份验证 我想知道 这两种设置环境变量的方式有什么区别 当
  • 如何在seaborn热图标签中使用科学计数法?

    我正在尝试在 python 中使用seaborn 获取热图 不幸的是 即使数字非常大 它也没有使用科学记数法 我想知道是否有任何简单的方法可以转换为科学记数法或任何其他合理的格式 这是显示问题的一段代码 import seaborn as
  • 在 PhotoImage 下调整图像大小

    我需要调整图像大小 但我想避免使用 PIL 因为我无法使其在 OS X 下工作 不要问我为什么 无论如何 因为我对 gif pgm ppm 感到满意 所以 PhotoImage 类对我来说没问题 photoImg PhotoImage fi
  • 当我从本地计算机更改为虚拟主机时,从 python 脚本调用 pdftotext 不起作用

    我编写了一个小的 python 脚本来解析 提取 PDF 中的信息 我在本地机器上测试了它 我有 python 2 6 2 和 pdftotext 版本 0 12 4 我正在尝试在我的虚拟主机服务器 dreamhost 上运行它 它有 py
  • 如果另一列中的值为空,则删除重复项 - Pandas

    我拥有的 df Name Vehicle Dave Car Mark Bike Steve Car Dave Steve 我想从 名称 列中删除重复项 但前提是 车辆 列中的相应值为空 我知道我可以使用 df dropduplicates
  • 从字典中绘制直方图

    我创建了一个dictionary计算 a 中出现的次数list每个键的内容 我现在想绘制其内容的直方图 这是我想要绘制的字典的内容 1 27 34 1 3 72 4 62 5 33 6 36 7 20 8 12 9 9 10 6 11 5
  • Django Web 应用程序中的 SMTP 问题

    我被要求向使用 Django Python 框架实现的现有程序添加一个功能 此功能将允许用户单击一个按钮 该按钮将显示一个小对话框 表单以输入值 我确实编写了一些代码 显示电子邮件已发送的消息 但实际上 它没有发送 My code from
  • 使用 Windows 任务计划程序安排 [Virtualenv 相关] Python 脚本

    I want to schedule a python script to start at 3AM and break at 5PM every weekday However the problem arises when I need
  • django 中的身份验证方法返回 None

    你好 我在 django 中做了一个简单的注册和登录页面 当想要登录时 登录视图中的身份验证方法不返回任何内容 我的身份验证应用程序 模型 py from django db import models from django contri
  • 导入目录下的所有模块

    有没有办法导入当前目录中的所有模块 并返回它们的列表 例如 对于包含以下内容的目录 mod py mod2 py mod3 py 它会给你
  • 操作错误:尝试在 ubuntu 服务器中写入只读数据库

    我正在使用 FlaskApp 运行mod wsgi and apache2在 Ubuntu 服务器上 我尝试运行烧瓶应用程序localhost成功 然后部署到ubuntu服务器上 但是当我尝试更新数据库时 出现错误 Failed to up
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 使用 Sphinx 时,如何记录没有文档字符串的成员?

    我正在为我发布的包编写文档 我发现您的文档越全面 人们就越容易找到您的包来使用 废话 实际上 我在充满爱心地编写代码的所有功能和细节方面获得了很多乐趣 然而 我对如何为类级变量编写与 Sphinx 兼容的文档感到完全困惑 特别是 我有一些e
  • 为什么我的 PyGame 应用程序根本不运行?

    我有一个简单的 Pygame 程序 usr bin env python import pygame from pygame locals import pygame init win pygame display set mode 400
  • python 日志记录替代方案 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 蟒蛇记录模块 http docs python org library logging html使用起来
  • PYTHON:从 txt 文件中删除 POS 标签

    我有以下 txt 文件 其中包含 POS 词性 http en wikipedia org wiki Part of speech tagging 每个单词的标签 不用 jj到 说 vb 我 ppss是 bedz愤怒 jj在 在 dt无与伦
  • 正则表达式 - 匹配不包含字符串的模式

    我对正则表达式很陌生 并且一直在寻找方法来做到这一点 但没有成功 给定一个字符串 我想删除以 abc 开头 以 abc 结尾且中间不包含 abc 的任何模式 如果我做 abc abc abc 它将匹配以 b 开头 以 abc 结尾并且中间包

随机推荐

  • .Net 使用 Lockbits 从位图中获取 RGB 值

    我使用下面的代码从图像中提取 RGB 值 有时这有效 但是在某些文件上 似乎步幅不能被位图宽度整除 它返回混合值 Dim rect As New Rectangle 0 0 bmp Width bmp Height Dim bmpData
  • 如何使用 Apache POI 插入换行符作为单元格的数据?

    我使用 Apache POI 3 16 创建 Excel 文件 我想将特定单元格内的数据设置为有换行符 rowConsommationEtRealisation createCell 0 setCellValue Consommation
  • VennDiagram 创建 vennCounts 列表

    我有一个这样的表 gt updownregtable PIM WDR MYC OBX ILMN 1651282 0 0 0 0 ILMN 1651354 0 0 0 0 ILMN 1651358 0 0 0 0
  • GData Youtube:获取缩略图

    我有一堆 youtube VideoID youtube com 网址的参数 watch v 中的字母数字字符串 我必须获取每个视频的缩略图 现在 我为每个 videoid 创建一个 HTTP GET 请求 如下所示 s VIDEOID 实
  • 我们如何在 MVC5 中启用 Bundles 缓存

    我在我的 mvc 项目中创建了 2 个包 如下所示 public static void RegisterBundles BundleCollection bundles bundles Add new ScriptBundle Scrip
  • 如何优雅地将所有枚举放入 std::set 中

    我有一个枚举 我想将它们全部放入集合中 然后使用 set intersection 算法删除一些 但这是题外话 除了我卡在第 1 步之外 一切都很好 如果我有 真实类具有基数更高的枚举 class MyClass enum Color re
  • 将 span 标签包裹在 div 内

    我有几个相互嵌套的 div 标签和一些嵌套的 span 标签 如下所示 div div span class mytags a href tag1 a span span class mytags a href tag2 a span di
  • 将 Matplotlib 中的多个 .png 图形输出到 Python 3.4 中的一个 zip 文件

    我编写了一个程序 使用 Python 中的 MatPlotLib 从 CSV 文件输出多个不同的饼图 超过 60 个 我认为我不需要共享所有代码 但我有一个draw 创建图形的函数 其结尾如下 def draw data make the
  • 在旋转界面方向时将 contentOffset 保留在 UICollectionView 中

    我正在尝试处理 UICollectionViewController 中的界面方向更改 我想要实现的是 我想要拥有same界面旋转后的 contentOffset 意思是 它应该根据边界变化的比率进行更改 从纵向开始 内容偏移量为 边界 尺
  • IEEE 754 实数能否“覆盖”其范围内的所有整数?

    原始问题经过编辑 缩短 以关注精度问题 而不是范围问题 单精度或双精度 实数的每种表示形式都限制为 range range 在此范围内有一些整数 1 2 3 4 等 负数也是如此 是否保证 IEEE 754 实数 浮点数 双精度数等 可以
  • MVC3 Values Ajax 文件上传

    我正在尝试使用 value ajax 上传器 http valums com ajax upload http valums com ajax upload 我的页面上有以下内容 var button fileUpload 0 var up
  • 监视目录的更改 - 潜在的高内存

    我目前正在使用nodeJS 中的脚本来监视目录 及其子目录 并在将文件放置在那里后执行一些功能 实际上 这将是一个 FTP 用户上传文件 对其进行处理 然后删除 显然 我已经看到脚本的 CPU 使用量很高 因为它遍历目录 等待文件可见 但令
  • 表视图的索引列表显示点 iOS 5+

    在我的应用程序中 我在带有索引列表的表视图中显示联系人 我显示索引列表如下 static NSString letters abcdefghijklmnopqrstuvwxyz void getAllUserInfoUsingBlock l
  • 在 Windows 上使用 Java 处理 MailDir 格式时出现问题

    这确实是两个问题 但它们密切相关 我正在开发一个 Java 应用程序 它将处理以 UNIX 风格 MailDir 格式存储的电子邮件 我正在使用 JavaMail API 发现Java邮件目录 http javamaildir source
  • 通过 refs 从父级中的无状态子组件访问输入值

    我正在创建一个程序来跟踪商店库存 我有一个项目名称 字符串 数组 通过它们映射来生成一个组件 该组件呈现每个项目的标题以及相应的输入字段 function Inventory props let items milk bread butte
  • 如何在 iPhone 上的锁定模式下播放声音

    每个人都知道在用户按下锁定按钮 无声 后保持应用程序运行的标准程序 如果我用 AVAudioPlayer 启动声音 在 iPhone 锁定之前 声音会一直播放到结束 锁定后 该应用程序仍在运行 如果我在 iPhone 锁定时尝试启动另一个声
  • 使用 pyFMI 进行模拟时出现 CVodeError

    我尝试在 Anaconda Python 3 6 8 上设置 pyFMI 安装 pyFMI 站点上列出的所有必需软件包 fmu 加载没有问题 但当我尝试模拟 fmu 时 出现错误 Could not find cannot import n
  • Gmail 电子邮件中的 Flex/Grid 属性被删除

    我有一个 PHP 脚本 可以通过邮件发送以下 HTML div style width 70 background color 060b2b margin auto display flex h1 style margin top 50px
  • Firebase 函数错误:.once 不是函数

    我正在尝试将一个简单的功能部署到 Firebase 但遇到了一些困难 每次我尝试在引用上使用 once 时 Firebase 都会告诉我它不是一个函数 这是我的代码 exports testFunction functions databa
  • 初始化 TypedDict 并稍后填充键和值

    我有一个字典 其中键和值的类型是固定的 我想定义 a 中的类型TypedDict如下 class MyTable TypedDict caption List str header List str table pd DataFrame e