错误:Python中的“TypeError:list index必须是整数,而不是str”

2021-04-11 15:23:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从另一个文件导入数据,并在函数中使用该文件,但出现错误:

门_position_pattern_actual=门_位置[d]

TypeError: list indices must be integers, not str

代码参考:

reactive_sampling_period_in_seconds = 10 * 60

Door_Position = list()

while 1:

    line = f.readline()
    vals = f.readline()
    vals= vals.rstrip()
    data1 = []
    for v in vals.split(","):
        data1.append(v.lstrip())
    if(entry[1]=="DoorPosition"):
        Door_Position = list(data1)

def door_positin_fnc_actual(self, time_in_seconds):

    time_period_in_10mins = 6
    index = int(math.floor(time_in_seconds%(144*reactive_sampling_period_in_seconds)/(reactive_sampling_period_in_seconds)))
    for d in Door_Position :
        Door_position_pattern_actual = Door_Position[d]
    return Door_position_pattern_actual[index]

输出参考:

^{pr2}$

我怀疑(1正在创建问题,但无法修复,请建议我。。。!!!在

2条回答
网友
1楼 ·

首先,您必须删除列表元素中的(和{}字符,如下所示:

Door_Position = [item.replace('(', '').replace(')','') for item in Door_Position]

您的Door_Position列表现在应该如下所示:

^{pr2}$

现在,Door\u Position是一个字符串列表,要使其工作,请尝试Door_position_pattern_actual = Door_Position[int(d)]

看看这个小样本:

Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a=[1,2,3]
>>> a[1]
2
>>> a['1']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str
>>> a[int('1')]
2

看到了吗?当我试图传递一个字符串作为一个列表索引时,我得到了和你相同的错误。在

希望这能帮助你理解。在

网友
2楼 ·

这都是错误的:

for d in Door_Position :
    Door_position_pattern_actual = Door_Position[d]

d不是索引,而是一个值。 所以在Door_Position[ ... ]中使用它是没有意义的

错误TypeError: list indices must be integers, not str很可能来自这里。在

也许你在找这样的东西:

for d in range(len(Door_Position)) :
    Door_position_pattern_actual = Door_Position[d]

相关问题