我正在使用字典来保存大量对象,并且每个对象都有一个字符串名称。具体来说,这是我的代码:
from itertools import product
for (i,j,k) in product(range(N),range(M),range(K)):
var_name='x_'+'_'+str(i)+str(j)+'_'+str(k)
var_dict[var_name] = f(var_name,other_params)
print len(var_dict)
f(...)
返回一个对象。在我的代码中,N=363、M=500 和 K=2。所以我预计字典中有 363000 个条目。但是当我检查 var_dict
的长度时,它是 330860!
(Pdb) len(var_dict)
330860
这是我的问题:
有什么解释吗?例如。 python内置哈希表可以寻址的item数量有没有限制?
我该怎么做才能解决这个问题?
请您参考如下方法:
问题出在这里:
str(i)+str(j)
这不会产生唯一标识符。例如i=1
和j=11
时设置的值会被i=11
和时设置的值覆盖j=1
(还有更多实例)。
您可以通过在两个数字之间插入一些分隔符来解决此问题(例如在 j
和 k
之间插入下划线)。