我需要在具有相同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'
答案 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