我正在编一本制造商词典。它看起来像这样:
mfgs = {17491: 'DS', 6543: 'AC'}
在这个场景中,我需要表示一系列整数,这些整数都指向同一个制造商。(例如1-99均由DC制造)
我已经看到你可以创建一个字典键来表示一个范围。在
^{pr2}$稍后,我将从外部文件中获取一个整数。根据遇到的值,我将把相应的制造商记录到另一个文件中。在
我不清楚如何检查是否存在有效的键/值对(无论是一个数字还是一个数字范围),如果没有找到一个有效的键/值对(无论是一个数字还是一个数字范围),如果没有找到一个扩展的if/then来解释字典中定义的键,我就不清楚了。在
似乎try/except是合适的,但是如果遇到21,mfg[21]失败,也不应该失败
我找到了一个办法。请注意,我在那里是因为我们在for循环中迭代找到的项。mfgs是一个预先填充的词典。在
你需要的不仅仅是一个简单的hashmap(即字典)查找。Hashmaps查找特定的键,而不是一个键是否在任何现有键的范围内。在
你有两个简单的选择。在
如果您提前知道范围,请在查找前将整数转换为一个范围:
如果没有,则在单独的字典中跟踪范围,并循环查看所有可能的值:
^{pr2}$如果速度很重要,请注意此选项将采用
O(n)
,其中n
是您拥有的范围数。更恰当的方法是使用二叉树,如amit answered here。这需要使用第三方库,如bintrees。相关问题 更多 >
编程相关推荐