首页 > 解决方案 > 为什么我在字符串对象上收到属性错误?

问题描述

根据学生所在的教室,我想返回两个值之一并将其分配给变量名“scoreMutiplier”,然后稍后在我的代码中的其他地方使用该变量名。但是,我对此仍然很陌生,并且在执行代码的第一个场景之后遇到了以下错误消息:AttributeError: 'str' object has no attribute 'isin'

import numpy as np

pupil = 'Tom'

classroom_A = ['Peter', 'Greg', 'Susan', 'Tom', 'John']

classroom_B = ['Steve', 'Joe', 'Jose', 'Pam', 'Paul']

scenario = [((pupil.isin(classroom_A )) & (~pupil.isin(classroom_B ))),
            ((pupil.isin(classroom_B )) & (~pupil.isin(classroom_A )))]

result = [3,1]

scoreMultiplier = np.select(scenario , result, default='')

print(scoreMultiplier)

完成这项工作的最佳方法是什么?

提前谢谢了。

标签: python

解决方案


你有正确的想法,但使用了错误的功能。str对象没有功能isin()。您应该使用关键字inwhich 在列表的情况下检查列表是否包含给定对象(在其他情况下它调用对象的__contains__()函数)。在使用而不是按位运算符时,您还应该使用 Python 的二元运算符 ( and, or, not) boolean。所以这意味着将这部分代码更改为以下内容:

scenario = [pupil in classroom_A and pupil not in classroom_B,
            pupil in classroom_B and pupil not in classroom_A]

推荐阅读