gpt4 book ai didi

Python 3 - 按键错误 = 8

转载 作者:太空宇宙 更新时间:2023-11-04 04:39:12 25 4
gpt4 key购买 nike

在我的代码中运行 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

代码是:

def add3dicts(d1,d2,d3):
insert3 = lambda x,y,z:tuple(set({x,y,z}))
insert2 = lambda x,y: tuple(set({x,y}))
returnDic = dict()
def addD1(lis):
if lis == []:
return
if(lis[0] in d2 and lis[0] in d3):
returnDic[lis[0]] = insert3(d1[lis[0]],d2[lis[0]],d3[lis[0]])
d2.pop(lis[0])
d3.pop(lis[0])
elif(lis[0] in d2):
returnDic[lis[0]] = insert2(d1[lis[0]],d2[lis[0]])
d2.pop(lis[0])
elif(lis[0] in d3):
returnDic[lis[0]] = insert2(d1[lis[0]],d3,[lis[0]])
d3.pop(lis[0])
else:
returnDic[lis[0]] = d1[lis[0]]
return addD1(lis[1:])
def addD2(lis):
if lis == []:
return
if(lis[0] in d3):
returnDic[lis[0]] = insert2(d2[lis[0]],d3[lis[0]])
d3.pop(lis[0])
else:
returnDic[lis[0]] = d2[lis[0]]
return addD2(lis[1:])
def addD3(lis):
if lis == []:
return
returnDic[lis[0]] = d3[lis[0]]
return addD2(lis[1:])
addD1(list(d1.keys()))
addD2(list(d2.keys()))
addD3(list(d3.keys()))
return returnDic

def printDicts():
d1 = eval(input("Please enter the first dictionary:"))
d2 = eval(input("Please enter the second dictionary:"))
d3 = eval(input("Please enter the third dictionary:"))
print("The merged dictionary is:")
d = add3dicts(d1,d2,d3)
print(d)
return

我尝试了我所知道的一切,搜索了互联网和一切,但无法弄清楚错误是什么以及如何解决。错误中的“key”与字典有关吗?如果是这样,那么错误是什么?这本词典似乎建得很好。如果它与字典无关,那么错误是什么?(对不起,如果英语有错误,这不是我的母语..)

最佳答案

显然,lis[0] 在运行时包含值 8。然后您尝试在 d2d3 中获取具有键 8 的元素。这些字典中的任何一个都不包含具有给定键的元素。这就是引发错误的原因。

您的代码只检查 lis[0] 是否在 d3 中,而不是 d2。所以 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]]

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

关于Python 3 - 按键错误 = 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51041731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com