我目前正在从.csv文件中读取行并将数据存储在array.array(' f')对象列表中。因为我将各个行传递给不同的进程,所以我想在每个array.array对象中存储一个(行)id。
我知道我可以通过定义一个新类并封装数据来做到这一点,但我想知道是否有一种不同的方法是通过向array.array动态添加一个自定义属性。这样做的好处是,在访问数据本身时无需额外查找,也无需定义只包含id和数据的类。
我知道元组列表也是一个选项,但在不久的将来我会想要存储可变属性。
这样做的python方法是什么?
答案 0 :(得分:2)
一种选择是将每行存储在包含其他元数据的Dict中。这类似于使用Decorator模式将元数据字段添加到您的类型。
例如,假设您有一个类似的测试文件:
$ cat test.file
line_1
line_2
您可以执行以下操作来添加元数据:
>>> with open('./test.file','rb') as fin:
... for line in fin:
... linecount += 1
... d = {'line':line,'metadata':'a line %d' % linecount}
... lines.append(d)
...
>>> print(lines)
[{'line': 'line_1\n', 'metadata': 'a line 1'}, {'line': 'line_2\n', 'metadata': 'a line 2'}]
答案 1 :(得分:1)
您应该定义一个MyArray
类,并将所有内容委托给array.array
。那你怎么看待这个更简单的解决方案呢?
id = "your_id"
array = array.array('f', [...])
data = {id: array}