TypeError: 'set'对象不可调用

8

我有两个iPython notebook安装。一个在AWS Micro Instance上,第二个在我的Macbook(OS X Yosemite)上使用Anaconda安装。 我发现它们处理以下代码的方式存在差异:

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)

在iPython-AWS上,我的输出如下:
set([0, 1, 2, 3, 5, 10, 11])
7
9

在iPython-Macbook上,我的输出结果是:
---------------------------------------------------------------------------
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

此外,以下是安装细节(如果相关): 1. AWS微实例上的iPython:http://i.stack.imgur.com/qYrq8.png 2. Macbook上的iPython笔记本 - http://i.stack.imgur.com/Q6Id5.png 我无法找到这种差异的原因,尽管我在Stack Overflow上看到了很多有关“TypeError:'set' object is not callable”问题的主题。如果有什么方法可以确保我的代码在两个安装上都能运行,我将非常感激任何帮助。

这两种情况下的Python版本是什么? - Eriks Dobelis
如果在代码开头打印set,你会看到什么? - Padraic Cunningham
AWS版本为2.7.6。 本地版本为2.7.10。 - user2762934
当然,在代码中出现异常之后,尝试使用print set作为诊断工具是毫无用处的。在执行其他任何操作之前,请先尝试它。 - Karl Knechtel
谢谢,我开始了一个新的笔记本,重新运行了它,代码正在工作。 - user2762934
显示剩余4条评论
5个回答

37

这个错误表示您可能已经定义了一个名为set的集合变量,如果是这样,那么会覆盖掉内置的set函数。

出现此问题的示例 -

>>> 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

3
我不知道为什么你被踩了。我敢打赌,这种变化是发生了的。 - Karl Knechtel
谢谢 - 这可能是问题所在,我会仔细查看代码并找到相关的行。 - user2762934

2
您可以在顶部菜单中重新启动内核。 Kernel->重启

1
只需删除您已分配的任何预定义变量,可能是有意或无意的,错误将消失。 我错误地在打印语句和括号之间放置了等号,例如 print=(A|B);,导致出现问题。 清除 print 变量后,问题得到解决。

0

【已修复】

类型错误:'set'对象不可调用

我们知道set是一个“内置函数”

在给任何变量赋值并运行程序之前,只需添加(del set)

附注:稍后可以将其删除。

示例:

tuple_data = {'A','B',1, 2, 'B','A'}
#del set
var_1 =  set(tuple_data)
print(var_1)
type(var_1)

输出:

{1, 2, 'B', 'A'}
set

0

请编写:

my_set = set

my_set.update(my_list)

不要使用括号。


我假设你指的是my_setmy_list,这是OP示例代码中使用的内容。 - ouflak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接