Estoy tratando de cambiar una parte específica de un diccionario, usando Python 3.9 y el terminal VS Code, pero en la parte de cambio,
elif choice=='2':
part_name = input('Which part are you willing to change?\n(CaSe SeNsEtIvE)\nname--age--score--ID? ')
if part_name in list_keys:
new_value = input("New value? ")
else:
print('part not found!')
ending()
listname[final[part_name]] = new_value
ending()
Devuelve un error TypeError: string indices must be integers
cuando intento acceder al valor en el diccionario. ¿Cuál es el problema? Tenga en cuenta que strip_name.delspace
es un módulo mío que elimina espacios en una cadena.
import os, msvcrt, strip_name
list_keys, listname = ['name', 'age', 'score', 'ID'], {'AsgharAkbari':{'name':"Asghar Akbari",'age': 28,'score': 86,'ID':23897},'amirrezavavsari':{'name':"amirreza vavsari",'age':15,'score': 94,'ID':53614}}
def delete():
os.system('cls')
print("which student are you willing to delete? (print back to go back)")
del_name = input("enter fullname(CaSe SeNsEtIvE): ")
final = strip_name.delspace(del_name)
if final in listname.keys():
choice = input('1- Delete fully\n2-change a part')
if choice=='1':
del listname[final]
ending()
elif choice=='2':
part_name = input('Which part are you willing to change?\n(CaSe SeNsEtIvE)\nname--age--score--ID? ')
if part_name in list_keys:
new_value = input("New value? ")
else:
print('part not found!')
ending()
listname[final[part_name]] = new_value
2 respuestas
En listname[final[part_name]]
, final
es una cadena y estás intentando indexarla con part_name
, que también es una cadena. Tal vez quisiste decir listname[final][part_name]
, que accede al valor de la clave part_name
en el diccionario en la clave final
en listname
.
part_name
se reconoce como una cadena porque en Python 3 input
no verifica el tipo de datos. La solución sería convertir datos de entrada en números enteros:
part_name = int(input('foo'))
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.