Python - 我无法想出这个keyError消息

时间:2016-01-07 04:09:04

标签: python keyerror

所以,我有一个使用dict制作的游戏桌,它看起来像这样:

{(0, 1): '2', (1, 2): '14', (3, 2): '8', (0, 0): '1', (3, 3): '7', (3, 0): '10', (3, 1): '9', (1, 1): '13', (2, 1): '0', (0, 2): '3', (2, 0): '11', (1, 3): '5', (2, 3): '6', (2, 2): '15', (1, 0): '12', (0, 3): '4'}

我创建了另一个名为dict的{​​{1}}来存储这些表,使用表本身作为键:

A

哪个A[hash(frozenset(table.tab.items()))] = table 是一个类:

table

我还有另一个名为class tabPlay: def __init__(self): self.h = 0 self.g = 0 self.tab = None #I store the dict in here, that's why the table.tab 的结构:

orderedA

用于使用键中的第二项创建orderedA[(hash(frozenset(table.tab.items())),*number*] = tabuleiro 的有序列表,因此我可以使用O(1)获取小数字并将其从{{1}中删除}(和A以及)访问我想要的AorderedA创建的列表是:

table

这是在orderedAdef getKey(item): return (item[0][1]) sortedA = sorted(orderedA.items(), key=getKey) 上每次插入后完成的,因此此列表始终会更新。

创建新A后,我调用此函数:

orderedA

每当我得到一个table时,我会将它与我想要的最后阶段进行比较,如果匹配则结束程序,或者在def verify(tJ): key = hash(frozenset(tJ.tab.items())) if ((key not in A) and (key not in F)): A[key] = tJ orderedA[(key,f(tJ))] = tJ else: if (key in A): if (A[key].g > tJ.g): A[key] = tJ orderedA[(key,f(tJ))] = tJ if (key in F): if (F[key].g > tJ.g): A[key] = tJ orderedA[(key,f(tJ))] = tJ del F[key] 为空之前继续运行。
我的问题是:运行一段时间后,我收到了一条 KeyError Message ,就像这样:

table.tab

以下是带有错误的行的块:

A

这让我非常讨厌, File "trabs.py", line 164, in minKey if (A[s[0][0]].h != heuristica): KeyError: -3852133766700633588 def minKey(n): sortedA = deque(n) element = sortedA.popleft() print (element) key = element[0][0] for s in sortedA: if (A[s[0][0]].h != heuristica): break else: if (heuristica >= A[s[0][0]].h): key = s[0][0] return (key) while (A): sortedA = sorted(orderedA.items(), key=getKey) key = minKey(sortedA) print ('small key: ', A[key]) element = A[key] del orderedA[(key,f(A[key]))] del A[key] if (element.tab == finalTab): return True if (move(element) == False): continue F[key] = elemento return False 总是有相同的元素,这段代码已经适用于一个测试用例(不是一个大的),如前所述,用于获取小项目的A列表来自orderedA,那么如何才能在列表中找到它而不是sortedA

0 个答案:

没有答案