dicts总是在python中存储哈希的最有效方法吗?

时间:2013-06-19 18:37:58

标签: python data-structures hashmap

在许多语言中,哈希映射/关联数组有许多不同的实现,每个实现都适用于不同的任务。据我所知,在Python中只有dict。

所以我想我想知道的是,是否存在定制数据结构有意义的应用程序?或者它总是比使用Python的内置数据结构慢?

1 个答案:

答案 0 :(得分:0)

这应该是评论,但是太长了所以......

Python字典实现为hash table。哈希表适合检索平均(O(1))。如果它们通常都很好,那么当存在大量碰撞时,它们的性能会降低。碰撞是指两个不同键的计算散列相同。所以在最坏的情况下,即如果所有密钥具有相同的散列,则它们的搜索操作的复杂度在O(n)中 - 这相当于线性搜索。

associative arrays可以通过使用其他几种数据结构来实现。值得注意的是binary search trees(不太好:平均为O(log n),最差为O(n))或B-tree(更好:平均为O(log n)最糟糕的)。 AFAIK标准Python库不提供任何这些。通过谷歌搜索一点点,它似乎有各种各样的实现。

这导致了你的问题的核心:“是否有任何自定义数据结构有意义的应用程序?或者它总是比使用Python的内置数据结构更慢?”。就我自己而言,我认为任何这些数据结构的任何纯Python实现都可能慢慢地是原生Python字典。如果您有非常特殊的需求,可以考虑在C级实现这些需求。但是如果你有这样的限制,那么Python起初可能不是最好的选择。