Python Forum

Full Version: 'tuple' object has no attribute 'data'
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
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".
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.
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'