我在下面的一个项目中遇到了错误,我寻找了一些解释(比如this page),我得到了错误的原因。但是我不知道在这种情况下可能是什么问题。
Traceback (most recent call last):
File "c:\Users\luisa.oliveira\Programs\VScode\dashboard-ecg-atualizado\app\views\dashboard.py", line 688, in n_protocolo_callback
g1, quantidades = graficos(
File "c:\Users\luisa.oliveira\Programs\VScode\dashboard-ecg-atualizado\app\views\dashboard.py", line 51, in graficos
desejados = ids[ids["ID"] == numero]["Protocolo"]
TypeError: list indices must be integers or slices, not str
第688行一些背景:
def n_protocolo_callback(data, laudos, idade, sexo, operacao, pagina, quais_graficos):
idade = faixas_idades.get(idade)
idade_inicial, idade_final = None, None
sexo = sexos.get(sexo)
if idade:
idade_inicial, idade_final = idade
ids = laudos
dados.loc[:, "Data"] = pd.to_datetime(dados.loc[:, "Data"])
# cria primeiro gráfico
g1, quantidades = graficos(
dados, ids, data, laudos, [idade_inicial, idade_final], sexo
)
功能开始:绘图()
def graficos(dados, ids, data, laudos, idade, sexo):
data_inicial, data_final = data
idade_inicial, idade_final = idade
figura = []
n_laudos = [numeros_diagnosticos.get(laudo) for laudo in laudos]
mostrar = []
for i, (nome, numero) in enumerate(zip(laudos, n_laudos)):
desejados = ids[ids["ID"] == numero]["Protocolo"]
编辑:“ids”是pd.read_csv
读取的包含2列(ID和协议)的csv。“numero”是整数,“nome”是字符串
我认为这个问题与用“ID”索引ID有关,但我不确定这是否正确,也不知道如何解决
1条答案
按热度按时间bfnvny8b1#
只要全局变量位于赋值语句的右侧,就可以在函数内部访问它们:
但是,如果在赋值语句的左侧有一个与全局变量同名的变量,则需要在函数中创建一个局部变量:
fun()
会将不同的值指派给x
,但不会影响外部的全局变量。如果你定义了一个函数,那么所有的参数都是局部作用域的,当你把这些参数传递给函数时,Python会在当前作用域中检查所有变量名,只有在没有找到所有变量的情况下才会进入下一个作用域。
尽量避免使用
global
变量,因为它们会使代码变得模糊。我删除了不影响结果的部分,以便进行以下解释:当您在
n_protocolo_callback
内使用laudos
的值重新指派ids
,然后将局部变量传递给graficos
时,就会发生此错误。当你使用
global
变量时,你不需要将它们作为参数添加到你的函数中。TypeError
是由于list
不能用字符串进行索引而引起的。正如错误消息所示,您可以使用整数或切片进行索引,即: