可爱的Python_课后习题_CDay−3 通过函式进行功能化
1. 读取某一简单索引文件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
python代码:
#-*- coding:utf-8 -*- import sys import os def collect(file_path): rfile = "" try : rfile = open(file_path) except: print u"文件路径不存在" sys.exit() #读取文件,并将文件内容用列表保存 key_value_list = list() for line in rfile.readlines(): key_value = line.split() key_value_list.append(key_value) length = len(key_value_list) #用来存储关键词 value_list = list() #用来存储最终结果 result_list = list() for i in range(0, length): #如果关键词已经比对过,则忽略,获取下一个关键词 flag = False for temp_value in value_list: if temp_value == key_value_list[i][1]: flag = True break if flag: continue key = list() key.append(key_value_list[i][0]) value = key_value_list[i][1] num = 1 #将关键词和之后的关键词进行比对,相同则数量加1并记录文档序号 for j in range(i + 1, length): if key_value_list[j][1] == value: key.append(key_value_list[j][0]) num += 1 value_list.append(value) result_list.append((num, value, key)) print result_list if __name__ == "__main__": file_path = u"e:/cdays−3-test.txt" collect(file_path)