AttributeError: 'set' object has no attribute 'b'

AttributeError: 'set' object has no attribute 'b'

我有以下代码:

N1 = int(input())
a = set(list(map(int, input().split())))
N2 = int(input())
for i in range(N2):
    b = input().split()
    c = set(list(map(int, input().split())))
    a.b[0](c)
print(sum(a))

使用典型输入,列表 b 如下所示:

b = ['intersection_update', '10']

a.b[0](c) 有什么问题?显然我没有正确评估它。

这个概念似乎不错,但似乎 set a 无法采用实际上是列表元素的属性。

我要评价的是:

a.intersection_update(c)

这是我得到的错误:

Traceback (most recent call last):
  File "solution.py", line 7, in 
    a.b[0](c)
AttributeError: 'set' object has no attribute 'b'

我想你想使用 getattr 来获取名称作为字符串存储在另一个变量中的属性:

getattr(a, b[0])(c)

您当前的代码正在 a 集上查找名为 b 的属性。

您不能使用 Python 中的点运算符进行这种间接属性访问。使用 getattr() 代替:

>>> a = {1, 2, 3, 4, 5}
>>> c = {3, 4, 5, 6, 7}
>>> b = ['intersection_update', '10']
>>> getattr(a, b[0])(c)
>>> a
{3, 4, 5}