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
Post a Comment