我一直收到此错误'list' object has no attribute 'priority'
,我不知道如何修复它。
以下是我的代码的一部分我不能在这里作为我的项目展示:
def Tree(self):
while len(self.heap) > 0:
leftChild= self.heap.pop(0)
rightChild= self.heap.pop(0)
a = leftChild.priority + rightChild.priority
parent = [(leftChild.item + rightChild.item, a)]
print parent
#self.heap.insert(0, parent)
#return self.heap[0]
所以基本上我有一个优先级队列列表,我将每个元素传递给一个列表堆。然后我通过pop取出每个项目,每个leftChild
和rightChild
应该有,例如:[("c", 0.1231)]
它运行正常并打印父项,直到我运行显示错误消息的插入函数。任何人都知道我做错了什么?
答案 0 :(得分:1)
如果它抱怨没有priority
属性的列表,那么可以肯定的是,从堆中出来的内容(例如leftChild
)是列表而不是“节点”某种。
确保使用以下内容将原始列表中的这些节点插入到堆中:
self.heap.insert (myList[4]) # an item in the list
而不是:
self.heap.insert (myList[4:5]) # a sublist of the list.
根据以下记录,您可以尝试打印type(leftChild)
以找出它的实际类型:
$ python
Python 2.6.5 (r265:79063, Jun 12 2010, 17:07:01)
[GCC 4.3.4 20090804 (release) 1] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> x = [1,2,3,4,5,6,7]
>>> x1 = x[4]
>>> x2 = x[4:5]
>>> x1
5
>>> x2
[5]
>>> type(x1)
<type 'int'>
>>> type(x2)
<type 'list'>