Python 使用已解析数据的元组初始化字典

Python 使用已解析数据的元组初始化字典,python,class,dictionary,Python,Class,Dictionary,我正在解析一个包含寄存器描述信息的文件,并试图围绕这些寄存器描述和位字段构建一个工具,用于读取/写入该设备上的寄存器。我有一个类似这样的文本文件(该文件/设备有数千个条目/寄存器): 我已将该文件解析为一个数据结构,其中包含寄存器地址(例如“0x00”)、寄存器描述(例如“配置ID”)、位字段(例如“15:0”)及其描述(例如“供应商ID”) 我正在构建一个工具,它需要根据寄存器地址访问这些信息,所以我考虑将所有这些寄存器描述打印到头文件中,以初始化这样的字典 regDict={} regBit

我正在解析一个包含寄存器描述信息的文件,并试图围绕这些寄存器描述和位字段构建一个工具,用于读取/写入该设备上的寄存器。我有一个类似这样的文本文件(该文件/设备有数千个条目/寄存器):

我已将该文件解析为一个数据结构,其中包含寄存器地址(例如“0x00”)、寄存器描述(例如“配置ID”)、位字段(例如“15:0”)及其描述(例如“供应商ID”)

我正在构建一个工具,它需要根据寄存器地址访问这些信息,所以我考虑将所有这些寄存器描述打印到头文件中,以初始化这样的字典

regDict={}
regBitFieldList=[]
regBitFieldList.append( ('15:0','Vendor ID') )
regBitFieldList.append( ('31:16','Device ID') )
# ex regDict[0x00]=('Configuration ID', [('15:0','Vendor ID'), ('31:16','Device ID')])
regDict[regOffsetAddress]=(regDescription, regBitFieldList)

regBitFieldList=[]
regBitFieldList.append( NEXT REG INFO)
regDict[nextRegAddress]= (nextRegDesc, regBitFieldList)
....
...
我有一个表示设备的类,这样我就可以通过这个类进行读注册、写注册,我想知道我是否要在另一个文件中初始化这个字典,并将数据导入一个class\u全局变量?(请参见下面示例中的变量“myDeviceDictionary”)

i、 e

Class myDevice():
    myDeviceDictionary = {}  ## Import dictionary initialization to this variable?
    __init__(self):
        initialize stuff.
    writeRegister(regAddress, byteString_4):
        Write 32-bits to a register at regAdress from thisDevice
    readRegister(regAddress):
        Read 32-bits from a register at regAddress from thisDevice

由于您正在使用头文件的内容初始化该类,因此我建议您在构造函数内部执行字典的初始化(\uuuu init\uuu)。如果您想支持不同的头文件,那么让构造函数获取一个参数,该参数是指向要读入的头文件的路径

让字典处于类级别是很好的——它是类的一员

编辑并回复OP的评论:

要使用此方法从另一个文件初始化字典,您需要首先导入类,然后从另一个文件实例化它

i、 例如,假设另一个文件与myDevice.py位于同一目录中,您可以执行以下操作:

import myDevice

device = myDevice('/home/user/foo.header')

然后,您在类中定义的构造函数将读取指定的头。

如何从其他文件引用它?我不确定是否遵循了您的要求。您是指如何引用另一个文件中的类的实例?我想在另一个文件中在我的构造函数中初始化这个字典。如果您的数据集庞大而复杂,您也应该考虑使用SQL数据库或类似的。从长远来看,我可能会使你不头痛。
import myDevice

device = myDevice('/home/user/foo.header')