Python论坛  - 讨论区

标题:《可爱的python》书中代码询问

2011年07月06日 星期三 09:48

在该书CDays-3这节内容的习题的第二题,随书的解答的代码如下:

我按照代码运行,shell提示第18行错误: 说字符串没有append方法。不知道我理解的有没问题,错误提示是不是说result[right]的键值是字符串,所以不能用append方法?

询问要使键值最后为一个列表,该问题该如何解决?

 

   1 #coding:utf-8
   2 '''cdays-3-exercise-2.py 字典的使用
   3     @not: 使用sys.args, 字典操作, 函式调用
   4     @see: sys模块参见help(sys)
   5 '''
   6 
   7 import sys                                          #导入sys模块
   8 
   9 def collect(file):
  10     ''' 改变 key-value对为value-key对
  11     @param file: 文件对象
  12     @return: 一个dict包含value-key对
  13     '''
  14     result = {}
  15     for line in file.readlines():                   #依次读取每行
  16         left, right = line.split()                  #将一行以空格分割为左右两部分
  17         if result.has_key(right):                   #判断是否已经含有right值对应的key
  18             result[right].append(left)              #若有,直接添加到result[right]的值列表
  19         else:
  20             result[right] = [left]                  #没有,则新建result[right]的值列表
  21     return result
  22 
  23 if __name__ == "__main__":
  24     if len(sys.argv) == 1:                          #判断参数个数
  25         print 'usage:\n\tpython cdays-3-exercise-2.py cdays-3-test.txt'
  26     else:
  27         result = collect(open(sys.argv[1], 'r'))    #调用collect函式,返回结果
  28         for (right, lefts) in result.items():       #输出结果
  29             print "%d '%s'\t=>\t%s" % (len(lefts), right, lefts)

 

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号