Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python字典访问以类型错误结束_Python_Python 3.x_Dictionary_Typeerror - Fatal编程技术网

Python字典访问以类型错误结束

Python字典访问以类型错误结束,python,python-3.x,dictionary,typeerror,Python,Python 3.x,Dictionary,Typeerror,我试图使用Python 3.9和VS Code terminal更改字典的一个特定部分,但在更改部分 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:

我试图使用Python 3.9和VS Code terminal更改字典的一个特定部分,但在更改部分

 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()
它返回一个错误
TypeError:当我试图访问dict中的值时,字符串索引必须是整数。有什么问题吗?请注意,
strip\u name.delspace
是我的一个模块,它删除字符串中的空格

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
           

listname[final[part_name]]
中,
final
是一个字符串,您试图用
part_name
对其进行索引,该字符串也是一个字符串。也许您的意思是
listname[final][part_name]
,它访问字典中
part_name
final
listname
处的键
part_name
的值,因为在Python 3
中,input
没有检查数据类型。解决方案是将数据从输入转换为整数:

part_name = int(input('foo'))

谢谢帮了我很多忙。那么它就像C++中的多维数组?@ SorooshYadollahPour!欢迎你!Python中的字典就像C++中的无序映射。或者多维地图,因为你有一本包含字典的字典。不,不,我指的是调用部分。