免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2284 | 回复: 3
打印 上一主题 下一主题

值传递的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-30 18:51 |只看该作者 |倒序浏览
可爱的python中的CDays-3的习题2:
读取某一简单索引文件cdays-3-test.txt,其每行格式为文档序号 关键词,现需根据这些信息转化为倒排索引,即统计关键词在哪些文档中,格式如下:包含该关键词的文档数 关键词 => 文档序号。其中,原索引文件作为命令行参数传入主程序,并设计一个collect函式统计 "关键字<->序号" 结果对,最后在主程序中输出结果至屏幕。
文件内容:
  1. 1 key1
  2. 2 key2
  3. 3 key1
  4. 7 key3
  5. 8 key2
  6. 10 key1
  7. 14 key2
  8. 19 key4
  9. 20 key1
  10. 30 key3
复制代码
使用代码:
  1. #coding:utf-8

  2. import sys
  3. def collect(file):
  4.     result={}
  5.     for line in file.readlines():
  6.         left,right = line.split()
  7.         if result.has_key(right):
  8.             result[right].append(left)
  9.         else:
  10.             result[right] = [left]
  11.     return result

  12. if __name__ == "__main__":
  13.     if len(sys.argv) == 1:
  14.         print "usage:\n\tpython cdays-3-exercise-2.py cdays-3-test.txt"
  15.     else:
  16.         result = collect(open(sys.argv[1],'r'))
  17.         for (left,right) in result.items():
  18.             print "%d '%s'\t=>\t%s"% (len(right),left,right)
复制代码
如果将后面的循环语句修改下面后是一样的
  1. for (right,left) in result.items():
  2.             print "%d '%s'\t=>\t%s"% (len(left),right,left)
复制代码
我的问题是,left和right的值是如何传递的, return result的结果应该死活key value的格式,是否是在for循环里的right和left和实际的分类的左右没有关系
即为无论开始定义right还是left,都等于return result中俄key值
谢谢!~

论坛徽章:
0
2 [报告]
发表于 2010-10-30 20:06 |只看该作者
回复 1# shaogang428


    result 是个字典, for (a,b) in result.items() 意思是遍历每个字典项, key赋值给(a,b)前面一个变量,即a, value给b. result.items() 返回的是个list,类似[(key1, value1), (key2, value2)...].
   若你写for(b,a) in result. items() 那当然是key赋值给b,value给a了。。。你这个问题太简单,反而不容易说明白。。

论坛徽章:
0
3 [报告]
发表于 2010-10-30 20:08 |只看该作者
推荐你看Dive Into Python, 我决得完全没难度啊。 这书有中文版好像http://woodpecker.org.cn/diveintopython/toc/index.html

论坛徽章:
0
4 [报告]
发表于 2010-10-31 09:09 |只看该作者
谢谢,解释的很清楚了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP