首先 - 我假设您只是想在纯 python 中而不是在 ac 扩展中执行此操作。因此,我假设您已将您感兴趣的不同记录加载到一组 python 对象中,而您的问题是您希望看到分布在这些对象中的更高级别的结构,并且在整个对象中到处都有位。
所以你不能简单地将每条记录加载到字节数组类型中吗?然后,您可以使用数组的 python 切片来创建一个新数组,其中仅包含您感兴趣的高级结构的数据。然后,您将拥有一个仅包含您感兴趣的数据的单字节数组,并且可以将其打印出来或以您想要的任何方式操纵它。
所以像:
a = bytearray(b"Hello World") # put your records into byte arrays like this
b = bytearray(b"Stack Overflow")
complexStructure = bytearray(a[0:6]+b[0:]) # Slice and join arrays to form
# new array with just data from your
# high level entity
print complexStructure
当然,您仍然需要知道您的高级结构在记录中的哪个位置正确地对数组进行切片,但无论如何您都需要知道这一点。
编辑:
请注意,获取列表的一部分不会复制列表中的数据,它只会创建一组对数据的新引用,因此:
>>> a = [1,2,3]
>>> b = a[1:3]
>>> id(a[1])
140268972083088
>>> id(b[0])
140268972083088
但是,对列表 b 的更改不会更改 a,因为 b 是一个新列表。要使原始列表中的更改自动更改,您需要创建一个更复杂的对象,其中包含原始记录的列表并以能够决定要更改的列表和列表的哪个元素的方式隐藏它们或在用户希望修改/查看复杂结构时查看。所以像:
class ComplexStructure():
def add_records(self,record):
self.listofrecords.append(record)
def get_value(self,position):
listnum,posinlist = ... # formula to figure out which list and where in
# list element of complex structure is
return self.listofrecords[listnum][record]
def set_value(self,position,value):
listnum,posinlist = ... # formula to figure out which list and where in
# list element of complex structure is
self.listofrecords[listnum][record] = value
当然,这不是做你希望做的事情的简单方法,但它应该做你需要的事情。