擅长:python、mysql、java
<p>这实际上取决于您想如何处理内部列表/字典中的值。如果添加新条目时,希望内部列表只有唯一值,那么对于大型列表,列表实现将变慢。它的规模大致为O(n),而不是O(1)[平均大小写]的字典。</p>
<p>如果你不关心那些内部列表中的倍数,那么它就更接近了。</p>
<p>我会像你一样使用字典。Python的字典非常有效(作为一个试图在C中实现实时应用程序的字典数据结构的人)的话)。</p>
<p>至于不使用集合。最好(因为内存不是问题,你说),调整序列化,并让代码的速度关键部分尽可能简单。反序列化后,只需遍历并将列表转换为集合:</p>
<pre><code>big_dict = {"the" : [1, 2, 3, 4, 5]} # imagine we got this from JSON
for key, value in big_dict:
big_dict[key] = set(value)
</code></pre>
<p>应该这么做。除非您一直序列化/反序列化整个索引,否则添加的预处理成本应该摊销到足够的请求上,而不重要。</p>
<p>或者,您可以用JSON注册编码器和解码器,这样您就可以自动地进行此转换。然而,当问题如此小且包含在内时,我通常不必费心。</p>
<p>因此,在基于字典的方法中,您可以做到:</p>
^{pr2}$
<p>如果您希望大的dict只对字典进行<em>copy</em>操作,则在最后一行使用^{{cd1>}而不是^{cd2>}。您也可以在最后一个循环中使用^{{cd3>}和^{{cd4>},但是^{{cd5>}…^{cd6>}是一个更快的分数(在我的机器上,YMMV)。</p>