2011年07月06日 星期三 09:48
我按照代码运行,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 © 2024
京ICP备05028076号