python - adding line in a file to a list results in None -


i need group lines in file having same id , create list of such lines. tried following code fails

def combiner(file):     exts = dict()     each_line in open(file):         each_line = each_line.rstrip()         id = get_id_from_aggextract(json.loads(each_line))         if id in exts.keys():             print id             lists = exts.get(id).append(each_line)             print type(lists)         else:             lists = list()             lists.append(each_line)             print id         exts[id] = lists     print exts     return list(exts.values()) 

after parsing lines following error seen

attributeerror: 'nonetype' object has no attribute 'append'

in:

lists = exts.get(id).append(each_line) 

append returns none... lists none... you'll have retrieve original list via exts.get(id) again or do;

lists = exts.get(id) lists.append(each_line) 

you'd better of using defaultdict, eg:

from collections import defaultdict import json  def combiner(filename):     exts = defaultdict(list)     open(filename) fin:         line in fin:             json_line = json.loads(line)             key = get_id_from_aggextract(json_line)             exts[key].append(line)     return exts 

Comments