【发布时间】:2013-06-16 10:27:41
【问题描述】:
在许多语言中,散列映射/关联数组有许多不同的实现,每种都适用于不同的任务。据我所知,在 Python 中只有 dict。
所以我想我想知道的是,是否有任何应用程序对自定义数据结构有意义?或者它是否总是比使用 Python 的一种内置数据结构慢?
【问题讨论】:
-
看看 dictobject.c - 令人惊奇的是,其中包含了多少思想、数学和基准测试。还要考虑到,如果您在 Python 中实现它,您将开始时会持续减速至少 10 倍,可能高达 100 倍。
-
你可能想看看这个PyCon video关于强大的字典
-
“在许多语言中,散列映射/关联数组有许多不同的实现,每种都适用于不同的任务。”我一定很累,但是您能否提供一些主流脚本语言中可用的“不同实现”的示例?
-
@JordanReiter 请注意,这个接口是由一些根本不是独立实现的类实现的,而只是
HashTable周围的专用子类/包装器(可以并且确实在 Python 中创建)太):属性、AuthProvider、PrinterStateReasons、Properties、Provider、RenderingHints、SimpleBindings、TabularDataSupport、UIDefaults。其他实现在 Python 中具有等价物:WeakHashMap是weakred.WeakKeyDictionary和LinkedHashMap是collections.OrderedDict。仍然有一些真正不同的实现,Scala 有更多示例。 -
@JordanReiter 此外,其中两个实现不是哈希表,而是二叉搜索树,它需要一个更通用的接口(SortedMap)。包括这些是有争议的(尽管并非完全错误)-它是不同的东西,但它不能被哈希表替换的用例很少见且范围很窄,而且 Python 没有二进制完全搜索树(在标准库中)。
标签: python data-structures hashmap