【发布时间】:2012-12-24 15:01:10
【问题描述】:
我想使用二维数组作为哈希表,在 C 语言中,就像:
hash[1][2] = 1
在 Python 中,我尝试过:
hash = {}
hash[1,2] = 1
但事实证明它非常慢。
那么如何在 Python 中高效地实现一个二维哈希表呢?
更新:
我的程序是一个计算量很大的程序。由于 Python dict 动态分配内存,我可以看到程序在运行时一直在等待内存分配,而 CPU 使用率时而低时而高。
C 风格的二维数组应该没问题,但我不知道如何在 Python 中实现它。
【问题讨论】:
-
定义“非常慢”。只要您不需要迭代其中的一部分,元组就是一个非常好的键。
-
Python 的 dicts 是 Python 中最快的哈希表,因为它们是用 C 实现的。提供 很多 更多关于您的代码和性能问题的详细信息。
-
@ThiefMaster “非常慢”意味着当我运行程序时(计算量大的程序),CPU 使用率很低,我可以看到程序正在等待内存分配。元组支持类似:
t = ();t[1,2]=1? -
can.:用更多细节更新问题:您创建了多少个键,值真的只是整数还是其他?你使用什么样的算法?读和写的混合是什么?为什么不只使用二维数组?稀疏吗?所有这些细节都将有助于获得正确的答案。
-
@NedBatchelder 一个 C 风格的 2D 数组应该没问题,我只是不知道如何在 Python 中实现它
标签: python dictionary hashtable