为了账号安全,请及时绑定邮箱和手机立即绑定

使用mincemeat.py“屈服”以键为列表的字典

使用mincemeat.py“屈服”以键为列表的字典

守候你守候我 2021-03-01 15:17:44
我试图了解map-reduce的概念,并希望使用mincemeat.py(一个适用于python的开源库)来实现小型程序。我已经使用映射器和化简器获得了一袋单词的简单单词计数。但是,我想实现查找文档中所有单词的tf-idf分数。为此,我认为的第一步是获得类型的字典{[word,docID]->count}。为此,我编写了以下代码def mapfn(k, v):    for line in v.splitlines():        for word in line.split():            l = [word.lower(), k]            yield l, 1但是,当我运行该程序时,出现以下错误。error: uncaptured python exception, closing channel <__main__.Client connected at 0x8a434ac> (<type 'exceptions.TypeError'>:unhashable type: 'list' [/usr/lib/python2.7/asyncore.py|read|83] [/usr/lib/python2.7/asyncore.py|handle_read_event|444]  [/usr/lib/python2.7/asynchat.py|handle_read|140]  [mincemeat.py|found_terminator|96]  [mincemeat.py|process_command|194]  [mincemeat.py|call_mapfn|171])我的理解是,使用mincemeat.py时,我们无法在map内生成列表,因为该错误表明缩小时不期望该列表。我对么?如果我是正确的话,有什么办法可以做到这一点?或者,我是否需要查看除百果馅以外的其他任何图书馆?
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

我不知道百果馅,但是很显然,它试图将列表用作字典或集合的键,这是不可能的。与其产生一个列表,不如产生一个元组。(换句话说,更改[word.lower(),k](word.lower(), k)


查看完整回答
反对 回复 2021-03-26
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号