我有一个Key-Value Dict,它包含一个Object和String的列表,
Dict[Key] = [object,string]
我想直接从字典中访问该对象的属性,我正在尝试这个,但它不起作用:
(generated["key"])[0].pathcost
如果生成的是dict,则对象位于列表的第0位,pathcost
是访问所需的属性。
最好的办法是什么?
对象定义是: 类节点: id = 0
def __init__(self, state, parent, action, depth=0, pathcost=0, heurcost=0):
self.state = state
self.parent = parent
self.action = action
self.depth = depth
self.pathcost = pathcost
self.heurcost = heurcost
self.id = Node.id
Node.id = Node.id + 1
我以这种方式生成地图:
generated[n.state] = [n, 'E']
确切地说它给出错误的代码是: if(suc not in generated)或((生成中的suc)和((生成[suc])[0] .pathcost>(n.pathcost + cost))):
错误给出的是这个:
...
if (suc not in generated) or ((suc in generated) and (generated[suc].pathcost > (n.pathcost + cost))):
AttributeError:'list'对象没有属性'pathcost'
答案 0 :(得分:1)
“(生成[suc] .pathcost>”出现在引用的错误中。
这与你说你正在执行的“(生成[suc])[0] .pathcost”不同。
由于你的错误说pathcost不是List的一个属性,我想你可能只是遗漏了[0]列表索引。