python - 带有try或if条件的Python字典?
问题描述
我有这样的python字典:
bla = {
"ab_1A": str(round(kit['a8'].value,2)),
"bc_2A": str(round(kit['a14'].value,2)),
"ca3_A": str(round(kit['a35'].value,2)),
"4A_1": str(round(kit['a51'].value,2)),
....
}
我从 .xls 文件中读取单元格。有什么好主意来检查例如。a8 存在并且没有 NoneType 如果是,则输入 0?感谢您的任何回复。'Kit' - 这是电子表格的名称
解决方案
看一下collections.defaultdict
- 它让您可以像平常一样使用字典,但是任何访问不在字典中的键的尝试都会导致使用您指定的默认值创建该键。
您可以将默认值设为浮点数,默认值为 0.0,因为浮点数就是这样做的,或者您可以创建一个“魔术”值并将其用作默认值:
kit = collections.defaultdict(float)
kit = collections.defaultdict(return_some_magic_value)
但是,如果您实际上是在尝试实现电子表格,我建议您考虑如何处理引用其他单元格的单元格循环。这不是一个完全微不足道的问题,这个问题的答案将告诉你如何储存你的细胞。
最基本的解决方案是存储所有未解析的内容,然后遍历单元格进行“深度优先”评估:如果一个单元格引用另一个单元格,则解决该单元格然后返回。您将在处理单元格时将它们标记为已解决,这样您的迭代和递归就不会发生冲突。一种简单的方法可能是将它们评估为单独的字典。您甚至可以使用defaultdict
工厂函数实际为您进行递归评估的地方!
推荐阅读
- reactjs - 如何获取项目开发的firebase数据?
- java - 参数列表是2个相同单词的方法(原始类型的名称)
- c# - 使用特定调色板在 C# 中实现 Floyd-Steinberg 抖动
- docker - k8s.gcr.io/metrics-server-arm64:v0.3.6 是可用于 arm64 部署的最新映像吗?
- cypress - 在我的 Cypress.io 测试中,为什么我需要将 cy.task 视为异步的而不是异步的
- django - 使用PDB进行远程调试时如何精确设置断点
- python - 当我尝试使用 Django 向数据库添加数据时,出现错误调用 NOT NULL 约束失败:pages_login.password
- google-apps-script - 谷歌应用脚本:在不同的脚本中使用库给我不同的行为
- php - 使用 PHP 删除 Foreach 循环中的文件名数组
- python - 如何手动登录然后使用scrapy抓取网站?