这是一个简单的类:
class Daz:
def __init__ (self, vName, vValue):
self.Name = vName
self.Value = vValue
我可以创建一个类的实例,因此添加到字典中:
dictOfDaz = []
dictOfDaz.append(Daz('Obj1',25))
dictOfDaz.append(Daz('Obj2',35))
所以,我现在想要访问我知道名字的一个实例的vValue属性。
在伪代码中:
Get vValue from instance of Daz where Daz.Name == 'Obj1'
我不想遍历字典,因为我知道我需要引用和必须执行的特定对象名称
for d in dictOfDaz:
if d.Name == 'Obj1' or d.Name == 'Obj2':
do_this
对我来说似乎效率低下。
更新 在列表和字典之间混淆了,解决方案(正如汤姆和其他人指出的那样)如下:
class Daz:
def __init__ (self, vName, vValue):
self.Name = vName
self.Value = vValue
dictOfDaz = {}
dictOfDaz['Obj1'] = Daz('Obj1',25)
dictOfDaz['Obj2'] = Daz('Obj2',35)
dictOfDaz['Obj3'] = Daz('Obj3',45)
dictOfDaz['Obj4'] = Daz('Obj4',55)
这允许我通过以下方式访问实例的值:
print getattr(dictOfDaz['Obj1'], 'Value')
完美地解决了我的问题!
答案 0 :(得分:1)
在您的示例中,您使用的是列表,而不是字典。如果您使用由Name编制索引的真正的dict,那么您可以按名称查找对象:
dictOfDaz = {}
daz = Daz('Obj1',25)
dictOfDaz[daz.Name] = daz
daz = Daz('Obj2',35)
dictOfDaz[daz.Name] = daz
现在您可以参考dictOfDaz['Obj1']
和dictOfDaz['Obj2']
。