首页 > 解决方案 > 带有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' - 这是电子表格的名称

标签: pythondictionaryxls

解决方案


看一下collections.defaultdict- 它让您可以像平常一样使用字典,但是任何访问不在字典中的键的尝试都会导致使用您指定的默认值创建该键。

您可以将默认值设为浮点数,默认值为 0.0,因为浮点数就是这样做的,或者您可以创建一个“魔术”值并将其用作默认值:

kit = collections.defaultdict(float)

kit = collections.defaultdict(return_some_magic_value)

但是,如果您实际上是在尝试实现电子表格,我建议您考虑如何处理引用其他单元格的单元格循环。这不是一个完全微不足道的问题,这个问题的答案将告诉你如何储存你的细胞。

最基本的解决方案是存储所有未解析的内容,然后遍历单元格进行“深度优先”评估:如果一个单元格引用另一个单元格,则解决该单元格然后返回。您将在处理单元格时将它们标记为已解决,这样您的迭代和递归就不会发生冲突。一种简单的方法可能是将它们评估为单独的字典。您甚至可以使用defaultdict工厂函数实际为您进行递归评估的地方!


推荐阅读