可爱的Python CDay−3练习2(字典dict)

可爱的Python网站https://wiki.woodpecker.org.cn/moin/ObpLovelyPython,该网站还有练习答案https://wiki.woodpecker.org.cn/moin/ObpLovelyPython/LpyAttAnswerCdays,可是,或许是因为内容太老的原因,有些代码在当前Python3中并不能正常运行,比如这题答案中的代码

 

练习2:读取某一简单索引文件 cdays−3-test.txt,其每行格式为:文档序号关键词,现须根据这些信息将它转化为倒排索引,即统计关键词在哪些文档中,格式如下:包含该关键词的文档数 关键词 => 文档序号。其中,原索引文件作为命令行参数传入主程序,并设计一个 collect 函式统计“关键字↔序号”结果对,最后在主程序中输出结果至屏幕。

cdays−3-test.txt 内容:

1 key1
2 key2
3 key1
7 key3
8 key2
10 key1
14 key2
19 key4
20 key1
30 key3

 

答案中append报错,我上网查了资料后修改完的代码如下,原代码出错的问题在于dict声明后的,key和value的默认类型为str,无法使用append方法(list才有的)

 1 def collect(file):
 2     lines = file.readlines()
 3     mydict = dict()
 4 
 5     for line in lines:
 6         left, right = line.split()
 7         mydict.setdefault(right, []).append(left)
 8 
 9     return mydict
10 
11 
12 myfile = open("cdays−3-test.txt.txt")
13 
14 mytmp = collect(myfile)
15 
16 for (key, value) in mytmp.items():
17     print("%d {%s:%s}" % (len(value), key, value))

运行截图如下

 

posted @ 2022-06-21 21:34  自由的青  阅读(33)  评论(1编辑  收藏  举报