Python Forum
'tuple' object has no attribute 'data' - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: 'tuple' object has no attribute 'data' (/thread-24643.html)



'tuple' object has no attribute 'data' - gregpederseng - Feb-24-2020

I am trying to determine time complexity of the MergeSort algorithm below:

def sortedMerge(self, a, b): 
        result = None
          
        if a == None: 
            return b 
        if b == None: 
            return a 
              
        if a.data <= b.data: 
            result = a 
            result.next = self.sortedMerge(a.next, b) 
        else: 
            result = b 
            result.next = self.sortedMerge(a, b.next) 
        return result
      
def mergeSort(self, h):
    import time
    start = time.time() 
    if h == None or h.next == None: 
        return h 
    middle = self.getMiddle(h) 
    nexttomiddle = middle.next
  
    middle.next = None
  
    left = self.mergeSort(h) 
          
    right = self.mergeSort(nexttomiddle) 
  
    sortedlist = self.sortedMerge(left, right)
    end = time.time()
    total = (end - start) * 1000.0
    return sortedlist, total
      
def getMiddle(self, h): 
    if (h == None): 
        return h 
  
    slow = h 
    fast = h 
  
    while (fast.next != None and 
           fast.next.next != None): 
        slow = slow.next
        fast = fast.next.next
              
    return slow
#Driver Code
y = mergeSort(array.head)
print(y)
The problem arises when I try to calculate runtime, and try to return the runtime (total) with sortedlist in the mergeSort function. When I do, I get error "tuple object has no attribute data".


RE: 'tuple' object has no attribute 'data' - Clunk_Head - Feb-25-2020

Please post the entire traceback using the insert error tag in the editor.
There is more useful information in it besides what you have provided.


RE: 'tuple' object has no attribute 'data' - gregpederseng - Feb-25-2020

Here is the traceback that I have gotten:
Error:
Traceback (most recent call last): File "<ipython-input-2-adcc77203176>", line 1, in <module> runfile('/Users/gregpedersen/Desktop/CPTS_215/prog_assignments/PA3/PA3.py', wdir='/Users/gregpedersen/Desktop/CPTS_215/prog_assignments/PA3') File "/Users/gregpedersen/opt/anaconda3/lib/python3.7/site-packages/spyder_kernels/customize/spydercustomize.py", line 827, in runfile execfile(filename, namespace) File "/Users/gregpedersen/opt/anaconda3/lib/python3.7/site-packages/spyder_kernels/customize/spydercustomize.py", line 110, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "/Users/gregpedersen/Desktop/CPTS_215/prog_assignments/PA3/PA3.py", line 347, in <module> y = rand500.mergeSort(rand500.head) File "/Users/gregpedersen/Desktop/CPTS_215/prog_assignments/PA3/PA3.py", line 197, in mergeSort left = self.mergeSort(h) File "/Users/gregpedersen/Desktop/CPTS_215/prog_assignments/PA3/PA3.py", line 197, in mergeSort left = self.mergeSort(h) File "/Users/gregpedersen/Desktop/CPTS_215/prog_assignments/PA3/PA3.py", line 197, in mergeSort left = self.mergeSort(h) File "/Users/gregpedersen/Desktop/CPTS_215/prog_assignments/PA3/PA3.py", line 197, in mergeSort left = self.mergeSort(h) File "/Users/gregpedersen/Desktop/CPTS_215/prog_assignments/PA3/PA3.py", line 197, in mergeSort left = self.mergeSort(h) File "/Users/gregpedersen/Desktop/CPTS_215/prog_assignments/PA3/PA3.py", line 197, in mergeSort left = self.mergeSort(h) File "/Users/gregpedersen/Desktop/CPTS_215/prog_assignments/PA3/PA3.py", line 197, in mergeSort left = self.mergeSort(h) File "/Users/gregpedersen/Desktop/CPTS_215/prog_assignments/PA3/PA3.py", line 201, in mergeSort sortedlist = self.sortedMerge(left, right) File "/Users/gregpedersen/Desktop/CPTS_215/prog_assignments/PA3/PA3.py", line 179, in sortedMerge if a.data <= b.data: AttributeError: 'tuple' object has no attribute 'data'