0

このエラーが何度も発生'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)]正常に実行され、エラー メッセージを表示する挿入関数を実行するまで親を出力します。誰が私が間違ったことを知っていますか?

4

1 に答える 1

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'>
于 2013-04-26T04:26:14.160 に答える