0

我需要将具有相同 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”对象没有“附加”属性

4

1 回答 1

2

在:

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

append返回None...所以lists将是无...您必须exts.get(id)再次检索原始列表,或者执行;

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

你最好使用 a 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
于 2013-07-19T15:40:58.803 回答