我有一个Python脚本,它将从预先存在的二进制文件中读取两个字节。一个字节确定设备类型,下一个字节确定子设备类型。两者一起定义整个设备。
例如:
x41 and x01 = Printer
x43 and x01 = Audio Device
例如,我的代码需要找到x41和x01才能成为打印机。
我想过用字典做这个,但我认为这意味着每个值有两个键并且实现起来并不是那么简单(至少对我的技能组来说)。
字典是一种好方法吗?或者其他更好的东西?
答案 0 :(得分:1)
使用单级字典来表示此数据有利有弊。然而,实现是微不足道的:使用元组作为dicitonary key。
d = { (0x41,0x01) : "Printer", (0x43,0x01) : "Audio Device" }
print "The device is:", d[major_byte,minor_byte]
作为替代方案,您可以使用嵌套词典:
d = { 0x41 : { 0x01 : "Printer" }, 0x43 : { 0x01 : "Audio Device" } }
print "The device is:", d[major_byte][minor_byte]
您要使用哪一个取决于您的确切要求。
答案 1 :(得分:1)
如评论中所述,两种方法是可能的:
Devices={(0x41,0x01) : 'Printer' , (0x43,0x01) : 'Audio Device', ...}
或
ComputerDevices={ 0x41 : 'Printer' , 0x43 : 'Audio Device', ...}
KitchenDevices={ 0x41 : 'Roaster' , 0x26 : 'Oven', ...}
...
Devices = {0x01: ComputerDevices , 0x02 :KitchenDevices, ...}
您还可以连接字节:key =bytes([0x43,0x01])
并将其用于字典键。