使用两个字典键(键1 _和_ 2)来确定值

时间:2015-10-27 16:57:39

标签: python python-2.7 dictionary key

我有一个Python脚本,它将从预先存在的二进制文件中读取两个字节。一个字节确定设备类型,下一个字节确定子设备类型。两者一起定义整个设备。

例如:

x41 and x01 = Printer
x43 and x01 = Audio Device

例如,我的代码需要找到x41和x01才能成为打印机。

我想过用字典做这个,但我认为这意味着每个值有两个键并且实现起来并不是那么简单(至少对我的技能组来说)。

字典是一种好方法吗?或者其他更好的东西?

2 个答案:

答案 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])并将其用于字典键。