Los índices de la lista de Python deben ser enteros o porciones no str

Funciones y métodos de Python

¿Los índices de cadenas deben ser números enteros o porciones, no cadenas? ¿Qué significa este error? Es un TypeError, que nos dice que estamos intentando realizar una operación en un valor cuyo tipo no es compatible con la operación. ¿Cuál es la solución?

En esta guía, responderemos todas esas preguntas. Discutiremos qué causa este error en Python y por qué se genera. Veremos un escenario de ejemplo para ayudarlo a descubrir cómo resolverlo. Sin más preámbulos, ¡comencemos!




El problema: typeerror: los índices de lista deben ser enteros o porciones, no str

Houston, tenemos un TypeError:

 typeerror: los índices de lista deben ser enteros o porciones, no str 

Este error se genera cuando intentas acceder a un valor dentro de una lista usando un valor de cadena.

Elementos en las listas se indexan usando números. Considere la siguiente lista:

1 2 3 4 5
S t r i n g

Para acceder a los valores de esta cadena, podemos usar la división de índices. Esto es cuando llamas a una cadena seguida de un valor de índice para recuperar el carácter en esa posición:

 example_string = Print "String" (example_string [0]) 

Este código devuelve: S . Nuestro código recupera el carácter en la posición del índice 0 en nuestra lista.

El 81% de los participantes dijeron que se sentían más seguros acerca de sus perspectivas laborales después de asistir a un campamento de entrenamiento. Asóciese a un bootcamp hoy mismo.

El graduado promedio de bootcamp pasó menos de seis meses en la transición de carrera, desde comenzar un bootcamp hasta encontrar su primer trabajo.

Si intenta acceder a un list usando una letra, como & ldquo; S & rdquo ;, ocurrirá un error.




Un escenario de ejemplo

El error & ldquo; typeerror: los índices de lista deben ser enteros o porciones, no str & rdquo; suele aparecer cuando intenta acceder a un elemento de una lista de objetos JSON como si fuera una lista.

Considere el siguiente fragmento de código:

 estudiantes = [{"nombre": "Lisa Simpson", "edad": 8}, {"name": "Janey Powell", "age": 9}, {"name": "Ralph Wiggum", "age": 8}] to_find = input ("Ingrese el nombre del estudiante cuya edad desea encontrar: ") para s en estudiantes: si estudiantes [" nombre "] == to_find: print (" La edad de {} es {}. ". formato (estudiantes [" nombre "], estudiantes [" edad "])) 

Este fragmento de código encuentra la edad de un estudiante en particular en una clase. Primero, hemos declarado una lista de estudiantes. Esta lista almacena a cada alumno como un objeto JSON.


A continuación, le pedimos al usuario que ingrese el nombre del estudiante cuya edad desea encontrar. Nuestro programa luego itera sobre cada estudiante en la lista usando un for loop para encontrar al estudiante cuyo nombre coincide con el que hemos especificado.

Si se encuentra ese nombre en particular, la edad del estudiante se imprime en la consola. De lo contrario, no pasa nada.

Intentemos ejecutar nuestro código:

Oh no. ¡Es un error de tipo!




La solución

Puede solucionar el error & ldquo; typeerror: los índices de lista deben ser enteros o porciones, no str & rdquo; asegurándose de acceder a los elementos de una lista utilizando números de índice, no strings.

El problema en nuestro código es que estamos intentando acceder a & ldquo; nombre & rdquo; en nuestra lista de estudiantes:

 estudiantes [" nombre "] 

Esto no corresponde a ningún valor porque nuestra lista contiene varios objetos JSON. Para resolver este problema, usaremos una declaración range () para iterar sobre nuestra lista de estudiantes. Luego, accederemos a cada estudiante por su número de índice:

 para s en rango (len (estudiantes) ): si estudiantes [s] ["nombre"] == to_find: print ("La edad de {} es {}.". formato (estudiantes [s] ["nombre"], estudiantes [s] ["edad" ])) 

Para empezar, hemos utilizado una declaración de rango. Esto nos permitirá iterar sobre todos los estudiantes de nuestra lista. Hemos reemplazado todas las instancias de & ldquo; estudiantes [& ldquo; key_name & rdquo;] & rdquo; con & ldquo; estudiantes [s] [& ldquo; key_name & rdquo;] & rdquo ;. Esto nos permite acceder a cada valor de la lista.

Ejecutemos nuestro código y veamos qué sucede:

 Ingrese el nombre del estudiante cuya edad desea encontrar: Lisa Simpson La edad de Lisa Simpson es 9. 

Nuestro código ha encontrado con éxito el edad de Lisa Simpson.


Accedemos a cada valor en la lista & ldquo; estudiantes & rdquo; usando su número de índice en lugar de una cadena. ¡Problema resuelto!






Conclusión

El error & ldquo; typeerror: los índices de lista deben ser números enteros o Se genera rebanadas, no str & rdquo; cuando intenta acceder a una lista utilizando valores de cadena en lugar de un número entero. Para resolver este problema, asegúrese de acceder a una lista utilizando un número de índice.

A El escenario común donde se genera este error es cuando iteras sobre una lista y comparas objetos en la lista. Para resolver este error, usamos un indicador range ()  t para que podamos acceder a cada valor en & ldquo; estudiantes & rdquo; individualmente.

¡Ahora estás listo para resolver este error como un experto en Python!

"Career Karma entró en mi vida cuando más lo necesitaba y rápidamente me ayudó a encajar un campamento de entrenamiento. Dos meses después de graduarme, encontré el trabajo de mis sueños que se alineaba con mis valores y objetivos en la vida. "

Venus, ingeniero de software en Rockbot



Los índices de la lista de Python deben ser enteros o porciones no str: StackOverflow Questions

Tutorials