Python:用O(logN)中的给定值计算字典中的项目数

时间:2013-09-08 23:44:29

标签: python algorithm

我想用给定的值计算字典中的项目数(假设字典中的值只是数字),我在网上搜索并找到两种方法,first one

sum(x == chosen_value for x in d.values())

第二种方法是在Counter模块中使用Collections

但是,我认为两种方法的运行时间都是O(N),其中N是字典中的项目总数。我想找到一种方法在O(logN)中执行此操作,是否可能?

提前感谢您的任何帮助和建议!

更新

感谢所有快速回复!它不能在O(logN)中完成。我可以使用二叉树来存储(键,值)对。

3 个答案:

答案 0 :(得分:5)

没有。你为什么期望它成为可能?可能是你有一个二叉搜索树,但是dicts是无序的,所以你必须遍历这些值。

答案 1 :(得分:2)

如果您没有这些值的先验知识,则必须读取给定字典中的每个值,这是正常情况。因此,在通常情况下, O(N)

答案 2 :(得分:0)

您可以维护另一个字典,该字典将值映射到count。这会给你在O(1)中寻找的计数。这个想法是实现一个更高阶的数据结构,就像字典一样,但通过在内部维护另一个字典,增加了返回值的能力。

我意识到这可能不是你要问的。只是把它放在那里,只是冒险。