我手头的任务是解析一个大文本(几个100K行)文件并累积一些基于统计数据的统计数据。每行包含一些先前分析的结果。
我写了一个自定义类来定义要累积的对象。该类包含2个字符串字段,3个集和2个整数计数器。因此,有__init__(self, name)
初始化具有名称和空字段的新对象,以及一个名为addRow()
的方法,该方法将信息添加到对象中。这些集合累积与该对象相关联的数据,并且计数器跟踪几个条件。
我最初的想法是迭代文件的行并在parseRow()
main
的方法
reader = csv.reader(f)
acc = {} # or set()
for row in reader:
parseRow(row,acc)
看起来像是:
parseRow(row, acc):
if row[id] is not in acc: # row[id] is the column where the object names/ids are
a = MyObj(row[id])
else:
a = acc.get(row[id]) # or equivalent
a.addRow(...)
这里的问题是累积集合acc
不能是set
,因为集合在Python中显然不可索引。 编辑以澄清, indexable 我并不是指获取第n个元素,而是能够检索特定元素。
一种解决方法是让dict
具有{obj_name : obj}
映射,但这感觉就像一个丑陋的解决方案。考虑到语言的优雅,我想有更好的解决方案。这肯定不是特别罕见的情况......
有什么建议吗?