包含字典的酸洗字典:失败,递归风格!

我和马尔可夫连锁店玩得很开心.我正在做一个
给定字符串中所有单词的字典,得到了如何计算
Word1在字符串中制作了许多出现,获取了所有的列表
遵循Word1的每个外观的Word2和数量
Times Word2也出现在字符串中. (我知道我应该
仅计算word2实际遵循多少次word1,但是当我
说,我玩得很开心...)
字典的印刷输出看起来像:
{'and':[1,{'to':1}],'down':[1,{'on':1}],'他们':[1,{'down':
1}],'no':[1,{'其他':1}],'this':[1,{'it':1}],'is':[2,{'a'':':':
2}],'on':[1,{'a':1}],'it':[2,{'is':2}],'think':[2,{'and'::
1,'单词':1}],'write':[1,{'this':1}],'to':[3,{'write':1,,
'put':1,'think':1}],'单词':[1,{'no'':1}],'其他':[1,
{'think':1}],'put':[1,{'shem':1}],'sin':[2,{'to':2}]}
这是实际功能.
def assemblevocab(自我):
self.worddb = {}
对于self.words中的单词:
尝试:
如果不是self.worddb.keys()中的单词:
WordSweights = {}
sufterwords = [self.words [i + 1] for i,e in
枚举(self.words)如果e == word]
对于AWN,AWNWords:
如果不是在WordSweights.keys()中:
WordSweights [aw] = afterWords.count(AW)
self.worddb [word] = [self.words.count(Word),WordSweights]
除了:
经过
out = open(" mchain.pkl",'wb')
pickle.dump(self.worddb,out,-1)
out.close()
我的问题是,我似乎无法提出挑战.当我尝试
加载
保存的数据,我得到:
attributeError:'tuple'对象没有属性'readline'
与泡菜一起
TypeError:参数必须具有"读取"和"读取"属性
查看docs.python.org上的泡菜页面,我看到我是
的确
应该能够腌制```
仅包含挑选对象'.
我敢肯定我错过了一些明显的东西.线索?

# 回答1


lysdexia 什么是self.words.count?可以是迭代器吗?我不认为你
可以泡菜.
# 回答2


在进行腌制之前,您是否要以二进制模式打开文件(" rb")?
2007年12月1日14:13:33 -0800,保罗·鲁宾
<" http://phr.cx"@nospam.invalidwrote:
什么是self.words.count?可以是迭代器吗?我不认为你
可以泡菜.
-http://mail.python.org/mailman/listinfo/python-list
- -
-大卫
# 回答3


在12月2日上午9:13,保罗·鲁宾(Paul Rubin) 什么是self.words.count?可以是迭代器吗?我不认为你
可以泡菜.
whaaaat ??
self.words显然是一个觉得的(您可以看到"在
self.words"在他的代码中?),可能只是列表.
Self.Words.Count对我来说看起来像是标准序列方法.
self.words.count(word)将返回int-您能看到所有这些
" [1,""," [2,"等在他的印刷dict输出中?
# 回答4


John Machin 它可能是一个文件,在这种情况下,其迭代器方法将读取行
从文件中引起tha t错误消息.但是我认为答案是
泡菜本身需要以二进制模式打开,作为某人
否则发布.
# 回答5


在12月2日上午8:59,Lysdexia 创建字典的代码很有趣,但不是很有趣
相关的.请考虑发布实际提供的代码
错误!
Pickle.load(文件)的文档说""
从打开文件对象文件中读取字符串,并将其解释为
泡菜数据流,重建和返回原始对象
等级制度.这相当于Unpickler(file).load().
文件必须有两种方法,一个读()方法,该方法采用整数
参数和不需要参数的readline()方法.两个都
方法应返回字符串.因此,文件可以是打开的文件对象
用于阅读,弦乐对象或任何其他符合的自定义对象
此界面.
"""
错误消息[复数?]
您提供的论点是 *不是 *打开文件对象,也不是
使用读取和读取方法的其他任何内容.打开文件
二进制模式('rb'),然后将结果传递给泡菜.
# 回答6


在12月2日上午9:49,保罗·鲁宾(Paul Rubin) 它可能是一个文件,在这种情况下,其迭代器方法将读取行
从文件中引起该错误消息.
不可能的:
(1)在" for单词中"中:""每个单词都会以" \ n"结尾,他将
剥离这些,没有证据.
(2)查看"" sufterwords = [self.words [i + 1]的行
枚举(self.words)如果e == word]""
如果self.words是一个文件,请告诉我如何工作!
(3)" self.words.count(word)" - attributeError:'文件'对象没有
属性"计数"
答案是(1)他需要提供任何类型的文件
[阅读他收到的错误消息!
(2)尽管文档的沉默,但有必要打开
该文件以二进制模式在系统上有所不同
(尤其是Windows)
[如果OP仍在阅读此线程,这是如何进行的示例
显示一个问题,用最小的代码重现问题,所有问题
输出包括堆栈跟踪]
c:\ junk>键入dpkl.py
进口泡菜
d = {'and':[1,{'to':1}],'down':[1,{'on':1}],'他们':[1,
{'下':
1}],'no':[1,{'其他':1}],'this':[1,{'it':1}],'is':[2,{'a'':':':
2}],'on':[1,{'a':1}],'it':[2,{'is':2}],'think':[2,{'and'::
1,'单词':1}],'write':[1,{'this':1}],'to':[3,{'write':1,,
'put':1,'think':1}],'单词':[1,{'no'':1}],'其他':[1,
{'think':1}],'put':[1,{'shem':1}],'sin':[2,{'to':2}]}
s =泡菜.dumps(d,-1)
dnews =泡菜.
打印"字符串",dnews == d
out = open(" mchain.pkl",'wb')
Pickle.dump(D,OUT,-1)
out.close()
f =打开(" mchain.pkl"," rb")
dnewb = pickle.load(f)
f.close()
打印"加载二进制",dnewb == d
f = open(" mchain.pkl"," r")
dnewa = pickle.load(f)
f.close()
打印"加载文本",dnewa == d
c:\ junk> python dpkl.py
字符串true
负载二进制true
traceba CK(最近的最新电话): 文件" dpkl.py",第24行, dnewa = pickle.load(f) 文件" C:\ Python25 \ lib \ pickle.py",第1370行 返回undickler(file).load() 文件" C:\ python25 \ lib \ pickle.py",第858行,在加载中 调度[key](self) 文件" C:\ python25 \ lib \ pickle.py",第1169行,load_binput i = ord(self.read(1)) TypeError:ord()期望一个字符,但长度为0的字符串已找到 将第一行更改为 导入Cpickle作为泡菜 给出这个: c:\ junk> python dpkl.py 字符串true 负载二进制true Trackback(最近的最新电话): 文件" dpkl.py",第24行, dnewa = pickle.load(f) Eoferror 两个不同的错误中的每一个都表明读数已终止 过早地是由于文件中的良好ol' ^z aka cpmeof的存在: 179 363 hth, 约翰

标签: python

添加新评论