将元数据添加到现有python对象

时间:2015-05-22 16:16:38

标签: python python-3.x metadata

我目前正在从.csv文件中读取行并将数据存储在array.array(' f')对象列表中。因为我将各个行传递给不同的进程,所以我想在每个array.array对象中存储一个(行)id。

我知道我可以通过定义一个新类并封装数据来做到这一点,但我想知道是否有一种不同的方法是通过向array.array动态添加一个自定义属性。这样做的好处是,在访问数据本身时无需额外查找,也无需定义只包含id和数据的类。

我知道元组列表也是一个选项,但在不久的将来我会想要存储可变属性。

这样做的python方法是什么?

2 个答案:

答案 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}
相关问题