Python O(1)成员数据访问可能吗?

在C中,为了访问“命名”成员数据,我们不断做:

const unsigned int CHEESE_CAKE = 0;
const unsigned int CHOCOLATE_CAKE = 1;
...
const unsigned int CHERRY_PIE = 1050;

然后,当我们想要访问与字符串匹配的某些特定资源时,我们可以简单地执行:

mResource[MyClass::CHEESE_CAKE]; // constant time O(1) access

我试图以类似的方式在python中执行此操作:

class MyClass:
    MY_CLASS_DATA1 = someData(1)
    MY_CLASS_DATA2 = someData(1)

但根据我的理解,python的成员函数存储在__dict__中,这实际上是一个给出O(logn)查找时间的哈希映射.

有没有办法像在C中那样在python中实现O(1)性能,或者由于python的动态特性,这是不可能的?

最佳答案 适当的哈希表实现提供了分摊的O(1)查找时间.当您提到O(log n)时间时,您正在考虑二叉搜索树. Python名称查找是O(1).

点赞