将文件中的行添加到列表会导致无

时间:2013-07-19 15:38:23

标签: python json

我需要在具有相同ID的文件中对行进行分组,并创建此类行的列表。我尝试了以下代码失败

def combiner(file):
    exts = dict()
    for 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())

解析某些行后,会看到以下错误

AttributeError:'NoneType'对象没有属性'append'

1 个答案:

答案 0 :(得分:2)

在:

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

append返回None ...因此lists将为无...您必须再次通过exts.get(id)检索原始列表或执行;

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

你最好使用defaultdict,例如:

from collections import defaultdict
import json

def combiner(filename):
    exts = defaultdict(list)
    with open(filename) as fin:
        for line in fin:
            json_line = json.loads(line)
            key = get_id_from_aggExtract(json_line)
            exts[key].append(line)
    return exts