Python元组作为键,对象作为值

2024-06-25 22:48:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我的要求是收集设备对象(具有容量、制造商、带宽、成本等特性)。我需要找到最大容量的设备。但由于可能有多个设备具有相同的能力,从同一个或不同的制造商,我不能使用的关键能力。你知道吗

我想把容量和型号的元组作为关键,但是我根据它们的容量而不是型号来选择设备

        class device:



              def __init__(self):
                    self.manufacturer       =     ""
                    self.purchasecost       =     ""
                    self.capacity           =     ""      # TB
                    self.power              =     ""      # KWH
                    self.bandwidth          =     ""      # MBPS
                    self.fail_rate          =     ""
                    self.powered_on         =     ""      # %
                    self.lIOPS              =     ""                
                    self.device_type        =     ""
                    self.moveincost         =     ""      # % of purchasecost
                    self.moveoutcost        =     ""      # % of purchasecost
                    self.datacentercost     =     ""
                    self.servicelife        =     ""
                    self.model              =     ""
                    pass

              def setparam(self, device_param):
                    self.manufacturer =     device_param["manufacturer"]
                    self.purchasecost =     device_param["purchasecost"]
                    self.capacity     =     device_param["capacity"]    # TB
                    self.power        =     device_param["power"]       # KWH
                    self.bandwidth    =     device_param["bandwidth"]   # MBPS
                    self.fail_rate    =     device_param["fail_rate"]
                    self.powered_on   =     device_param["powered_on"]  # %
                    self.lIOPS        =     device_param["IOPS"]                
                    self.device_type  =     device_param["device_type"]
                    self.moveincost   =     device_param["moveincost"]  # % of purchasecost
                    self.moveoutcost  =     device_param["moveoutcost"] # % of purchasecost
                    self.datacentercost =   device_param["datacentercost"]
                    self.servicelife  =     device_param["servicelife"]
                    self.model        =     device_param["model"]

在另一个类中,我创建对象并使用它们。你知道吗

             def available_devices(self):
                 hdd1 = self.createdisk1()
                 hdd2 = self.createdisk2()
                 ssd1 = self.createSSD1()
                 self.availabledevices[hdd1.model]=hdd1
                 print ( "Added HDD1 "+str(self.availabledevices[hdd1.model]))
                 self.availabledevices[hdd2.model]=hdd2  
                 print ( "Added HDD2 "+str(self.availabledevices[hdd2.model]))

                 self.availabledevices[ssd1.model]=ssd1

            def get_highest_capacity_device(self):   
                 sorted_capacities = sorted(self.availabledevices.iterkeys())
                 highest_capacity =  sorted_capacities[len(sorted_capacities) -1]
                 highest_capacity_device = self.availabledevices[highest_capacity]
                 return highest_capacity_device

此代码当前使用容量作为密钥,但当有多个具有相同容量的设备时,它显然不起作用。我的问题是我应该用什么作为键 -我可以根据设备的容量来分类 -我可以让所有的设备都有一定的容量


Tags: ofselfmodelparamdevicedef容量capacity
1条回答
网友
1楼 · 发布于 2024-06-25 22:48:13

你为什么还要用字典?与简单的列表相比,没有什么好处:

availabledevices = [ hdd1, hdd2, ssd ]
highest_capacity_device = max(availabledevices, key=lambda x: x.capacity)

相关问题 更多 >