【发布时间】:2015-12-03 17:05:29
【问题描述】:
我正在使用 shove 来避免将庞大的字典加载到内存中。
from shove import Shove
lemmaDict = Shove('file://storage')
with open(str(sys.argv[1])) as lemmaCPT:\
for line in lemmaCPT:
line = line.rstrip('\n')
lineAr = string.split(line, ' ||| ')
lineKey = lineAr[0] + ' ||| ' + lineAr[1]
lineValue = lineAr[2]
print lineValue
lemmaDict[lineKey] = lineValue
但是,在阅读lemmaCPT 的过程中,我得到了以下 KeyError 和 Traceback。怎么回事?
Traceback (most recent call last):
File "./stemmer.py", line 19, in <module>
lemmaDict[lineKey] = lineValue
File "/opt/Python-2.7.6/lib/python2.7/site-packages/shove/core.py", line 44, in __setitem__
self.sync()
File "/opt/Python-2.7.6/lib/python2.7/site-packages/shove/core.py", line 74, in sync
self._store.update(self._buffer)
File "/opt/Python-2.7.6/lib/python2.7/_abcoll.py", line 542, in update
self[key] = other[key]
File "/opt/Python-2.7.6/lib/python2.7/site-packages/shove/base.py", line 123, in __setitem__
raise KeyError(key)
KeyError: '! ! ! \xd1\x87\xd0\xb8\xd1\x82\xd0\xb0\xd0\xb5\xd1\x82\xd1\x81\xd1\x8f \xd1\x82\xd1\x80\xd0\xbe\xd0\xb5\xd0\xba\xd1\x80\xd0\xb0\xd1\x82\xd0\xbd\xd1\x8b\xd0\xbc \xd0\xbf\xd0\xbe\xd0\xb2\xd1\x82\xd0\xbe\xd1\x80\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5\xd0\xbc \xd0\xbb\xd1\x8e\xd0\xb1\xd0\xbe\xd0\xb3\xd0\xbe ||| ! ! ! is pronounced by'
示例输入:
! ! ! читается троекратным повторением ||| ! ! ! is pronounced by repeating ||| 0.00744887 8.53148e-39 0.00989281 8.53148e-39
! ! ! читается троекратным повторением ||| ! ! ! is pronounced by ||| 0.00744887 8.53148e-39 0.00989281 8.53148e-39
! ! ! читается троекратным повторением ||| ! ! ! is pronounced ||| 0.00744887 8.53148e-39 0.00989281 8.53148e-39
! ! ! читается троекратным повторением ||| ! ! ! is ||| 0.00819374 8.53148e-39 0.00989281 0.0128612
! ! ! читается троекратным повторением ||| ! ! ! ||| 0.000119622 8.53148e-39 0.0098932 0.590703
! ! ! читается троекратным повторением ||| , ! ! ! is pronounced by ||| 0.00819374 8.53148e-39 0.00989281 8.53148e-39
! ! ! читается троекратным повторением ||| , ! ! ! is pronounced ||| 0.00819374 8.53148e-39 0.00989281 8.53148e-39
! ! ! читается троекратным повторением ||| , ! ! ! is ||| 0.00819374 8.53148e-39 0.00989281 0.00154241
! ! ! читается троекратным повторением ||| , ! ! ! ||| 0.0074488 8.53148e-39 0.00989281 0.070842
! ! ! читается троекратным повторением любого ||| ! ! ! is pronounced by repeating ||| 0.00744887 8.53148e-39 0.00989281 8.53148e-39
! ! ! читается троекратным повторением любого ||| ! ! ! is pronounced by ||| 0.00744887 8.53148e-39 0.00989281 8.53148e-39
运行 code.py sampleinput 将产生上述 KeyError 和 Traceback。
【问题讨论】:
-
功能性(原型)代码会更好......带有示例输入。
-
如果我能找到什么,我会先挖掘它并发布......
-
谢谢!我很感激。
标签: python dictionary keyerror python-shove