- 论坛徽章:
- 0
|
可爱的python中的CDays-3的习题2:
读取某一简单索引文件cdays-3-test.txt,其每行格式为文档序号 关键词,现需根据这些信息转化为倒排索引,即统计关键词在哪些文档中,格式如下:包含该关键词的文档数 关键词 => 文档序号。其中,原索引文件作为命令行参数传入主程序,并设计一个collect函式统计 "关键字<->序号" 结果对,最后在主程序中输出结果至屏幕。
文件内容:- 1 key1
- 2 key2
- 3 key1
- 7 key3
- 8 key2
- 10 key1
- 14 key2
- 19 key4
- 20 key1
- 30 key3
复制代码 使用代码:- #coding:utf-8
- import sys
- def collect(file):
- result={}
- for line in file.readlines():
- left,right = line.split()
- if result.has_key(right):
- result[right].append(left)
- else:
- result[right] = [left]
- return result
- if __name__ == "__main__":
- if len(sys.argv) == 1:
- print "usage:\n\tpython cdays-3-exercise-2.py cdays-3-test.txt"
- else:
- result = collect(open(sys.argv[1],'r'))
- for (left,right) in result.items():
- print "%d '%s'\t=>\t%s"% (len(right),left,right)
复制代码 如果将后面的循环语句修改下面后是一样的- for (right,left) in result.items():
- print "%d '%s'\t=>\t%s"% (len(left),right,left)
复制代码 我的问题是,left和right的值是如何传递的, return result的结果应该死活key value的格式,是否是在for循环里的right和left和实际的分类的左右没有关系
即为无论开始定义right还是left,都等于return result中俄key值
谢谢!~ |
|