Python 3键错误=8

2024-10-01 09:23:08 发布

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

在代码中运行printDicts()时出现以下错误:

Traceback (most recent call last):
  File "Desktop\PythonApplication1\PythonApplication1\exercise3.py", line 238, in <module>
    main()
  File "Desktop\PythonApplication1\PythonApplication1\exercise3.py", line 232, in main
    choisesDict[choise]()
  File "Desktop\PythonApplication1\PythonApplication1\exercise3.py", line 206, in printDicts
    d = add3dicts(d1,d2,d3)
  File "Desktop\PythonApplication1\PythonApplication1\exercise3.py", line 198, in add3dicts
    addD3(list(d3.keys()))
  File "Desktop\PythonApplication1\PythonApplication1\exercise3.py", line 194, in addD3
    return addD2(lis[1:])
  File "Desktop\PythonApplication1\PythonApplication1\exercise3.py", line 184, in addD2
    returnDic[lis[0]] = insert2(d2[lis[0]],d3[lis[0]])
KeyError: 8

代码是:

^{pr2}$

我尝试了我所知道的一切,搜索了互联网和一切,但不知道是什么错误和如何解决它。 错误中的“键”与字典有关吗?如果是这样,那么错误是什么?这本词典似乎写得很好。如果它与字典无关,那错误是什么? (抱歉,如果英语有错误,这不是我的母语….)


Tags: 代码inpymain错误linefiled2
1条回答
网友
1楼 · 发布于 2024-10-01 09:23:08

显然,lis[0]在运行时包含值8。然后尝试用d2d3中的键8获取元素。这些字典都不包含具有给定键的元素。为什么会出现错误。在

您的代码只检查lis[0]是否在d3中,而不是{}。所以d2一定是罪魁祸首。尝试将代码更改为:

def addD2(lis):
    if lis == []:
        return
    if(lis[0] in d3 and lis[0] in d2):
        returnDic[lis[0]] = insert2(d2[lis[0]],d3[lis[0]])
        d3.pop(lis[0])
    elif lis[0] in d2:
        returnDic[lis[0]] = d2[lis[0]]

注意:由于我不确定整个算法的预期逻辑是什么,它可能不会给你预期的结果。但它应该避免例外。在

相关问题 更多 >