2014-10-12 35 views
0

分开后,我有一个文本文件,这样的价值观:包字典,用逗号

key1 value1 A 
key1 value2 B 
key1 value3 A 
key2 value1 A 
key2 value2 B 

我试图打开它作为一个字典和打印用逗号分隔键和值的列表,以便它看起来像这样中底:

key1 value1,value2,value A,B,A 
key2 value1,value2,value A,B 

我想下面的代码:

f = open('file.txt', 'r') 
answer = {} 
for line in f: 
    list = ",".join(map(str,f)) 
    print list 

但它不工作

任何想法我做错了什么? 感谢您的帮助

回答

2

使用collections.defaultdict

from collections import defaultdict 

with open('file.txt') as f: 
    answer = defaultdict(lambda: ([], [])) 
    for line in f: 
     key, value, alpha = line.split() 
     answer[key][0].append(value) 
     answer[key][1].append(alpha) 

for key, (values, alphas) in sorted(answer.items()): 
    print key, ','.join(values), ','.join(alphas) 

输出:

key1 value1,value2,value3 A,B,A 
key2 value1,value2 A,B 
0

要初始化字典,但你从来没有在循环使用它。试试这种方法:

from collections import defaultdict 

answers = defaultdict(list) 

with open('file.txt') as inf: 
    for line in inf: 
     bits = line.rstrip().split() 
     answers[bits[0]].append(','.join(bits[1:])) 

for key,values in answers.iteritems(): # in Python 3, use answers.items() 
    for value in values: 
     print('{} {}'.format(key, value)) 

此外,不要使用list作为变量的名称。