2014-10-12 36 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作爲變量的名稱。