擅长:python、mysql、java
<p>看一看<a href="https://docs.python.org/3/library/collections.html?highlight=defaultdict#collections.defaultdict" rel="nofollow noreferrer">^{<cd1>}</a>——它允许您像普通一样使用字典,但是任何试图访问字典中不存在的键的尝试都会导致使用您指定的默认值创建该键</p>
<p>您可以将默认值设为float,默认值为0.0,因为float就是这样做的,或者您可以创建一个“magic”值并将其用作默认值:</p>
<pre><code>kit = collections.defaultdict(float)
kit = collections.defaultdict(return_some_magic_value)
</code></pre>
<p>如果你真的想实现一个电子表格,我建议你考虑一下如何处理引用其他单元格的单元格循环。这不是一个完全无关紧要的问题,这个问题的答案将告诉你如何存储你的细胞</p>
<p>最基本的解决方案是存储所有未解析的内容,然后遍历单元格进行“深度优先”计算:如果一个单元格引用了另一个单元格,则先解析该单元格,然后再返回。您应该标记解析的单元格,这样迭代和递归就不会发生冲突。一个简单的方法可能是将它们放入一个单独的词典中进行评估。您甚至可以使用<code>defaultdict</code>,其中工厂函数实际上为您执行递归求值</p>