String1 30
String2 100
String3 23
String1 5
.....
我想将计数保存到字典中。
count = {}
for filename in os.listdir(path):
if(filename.endswith("idx")):
continue
print filename
f = open(os.path.join(path, filename))
for line in f:
(s, cnt) = line[:-1].split("\t")
if(s not in count):
try:
count[s] = 0
except MemoryError:
print(len(count))
exit()
count[s] += int(cnt)
f.close()
print(len(count))
在count[s] = 0
处出现了内存错误,
但我的计算机仍有更多可用内存。
我该如何解决这个问题?
谢谢!
更新:
我在此处复制了实际代码。
我的 python 版本是 2.4.3,计算机运行的是 linux,并且有大约 48G 的内存,但只使用了不到 5G。代码停在len(count)=44739243
。
更新2: 字符串可以重复(不是唯一的字符串),因此我想将所有字符串的计数相加。我想要的操作只是读取每个字符串的计数。每个文件大约有 1000 万行,我有超过 30 个文件。我预计计数少于 1000 亿。
更新3: 操作系统为 linux 2.6.18。
getStringCount
长什么样? - seanf.close()
上面的三行缩进有误,是吗? - Junuxxprint(len(count))
和print(sys.getsizeof(count))
,以了解字典的大小。 - Junuxx