Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"TypeError: 'set' object is not callable"

I have two iPython notebook installations. One on an AWS Micro Instance, the second using Anaconda on my Macbook (OS X Yosemite). I encountered a difference in the way both of them handle the following code:

my_list = [1, 2, 3, 0, 5, 10, 11, 1, 5]
your_list = [1, 2, 3, 0, 12, 13]
my_set = set(my_list)
your_set = set(your_list)
print my_set
print len(my_set)
print len(my_list)

On iPython-AWS, my output is:

set([0, 1, 2, 3, 5, 10, 11])
7
9

On iPython-Macbook, my output is:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-29-cd060f1b0bde> in <module>()
      1 my_list = [1, 2, 3, 0, 5, 10, 11, 1, 5]
      2 your_list = [1, 2, 3, 0, 12, 13]
----> 3 my_set = set(my_list)
      4 your_set = set(your_list)
      5 print my_set

TypeError: 'set' object is not callable

Additionally, these are the installation details, if relevant: 1. iPython on AWS Micro Instance: http://i.stack.imgur.com/qYrq8.png

  1. iPython Notebook on Macbook - http://i.stack.imgur.com/Q6Id5.png

I cannot seem to find the reason for this difference, although I did come across many threads on Stackoverflow regarding the "TypeError: 'set' object is not callable" issue. I will appreciate any help in understanding why this is so, and if there is anything I can do to ensure my code runs on both installations.

like image 345
user2762934 Avatar asked Jul 03 '15 08:07

user2762934


3 Answers

This error indicates that you may have defined a set with the variable name as set , if you did so, that would overwrite the built-in function set .

Example of this issue occuring -

>>> set = set([1,2,3,4,5])
>>> my_set = set([2,3,4,5,6])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object is not callable
like image 165
Anand S Kumar Avatar answered Oct 08 '22 05:10

Anand S Kumar


Simply remove any predefined variable you have assigned, may be intentionally or unintentionally & the error will be vanished. I have wrongly placed = sign between print statement & brackets like print=(A|B); due to which it was happening. After clearing print variable it was fine.

like image 26
user13292071 Avatar answered Oct 08 '22 03:10

user13292071


You can restart the kernel in the top menu. Kernel->Restart

like image 36
Xavier Sebastian Vaca Ordoñez Avatar answered Oct 08 '22 04:10

Xavier Sebastian Vaca Ordoñez