我在Python脚本中有一本字典。由于dict.get(key)
返回None,因此无法通过给定键获取任何值。
所以我打印了dict的那些键,打印返回了这段文字:[u'2\r', u'G\r', u'\\\r', u'q\r', u'%\r', ' ', u'O\r', u'd\r', u'y\r', u'-\r', u'B\r', u'W\r', u'l\r', u'5\r', u'J\r', u'_\r', u't\r', u'(\r'.......]
我很好奇每个键是否包含回车符号。我不明白为什么会这样。
填写dict的代码:
prevChar = ' '
self.saDictA[' ']=[]
for i in range(0,len(self.saA)):
currentChar = self.stringA[self.saA[i]]
if currentChar == prevChar:
self.saDictA[prevChar].append(i)
else:
self.saDictA[currentChar]=[i]
prevChar = currentChar
正如您在上面的代码中看到的,每个键应该是一个单独的char,所以我不明白为什么键包含'\ r'符号。
编辑:我在保存之前尝试检查dict中每个键的len,然后在加载之后。我已经意识到在保存这个lib之前,每个键的长度都等于1但是在加载之后,每个键的长度都是2。
以下是代码:
import cPickle as pickle
def ssaDictA():
for i in self.creation.saDictA.keys():
print len(i)
with open('saDictA','w+') as f:
pickle.dump(self.creation.saDictA,f)
输出: 1 1 1 ... 1
def lsaDictA():
with open('saDictA','rb') as f:
dict = pickle.load(f)
for i in dict.keys():
print len(i)
return dict
输出: 2 2 2 ... 2
pickle是cPickle - 将cPickle导入为pickle 哪个可能是问题?