我不明白为什么程序在我运行的不同时间给出不同的结果,这才是真正的问题。我很确定问题就在这里,而不是在代码后面,我已经运行了一些断言来检查下面代码的输入是否相同,每次都会得到不同的结果
输入来自磁盘中的pickle文件,一旦程序运行,当我多次调用函数或多次打开pickle文件时,结果保持不变,但如果我重新启动程序,结果会改变
我验证了if tuple(setv) == chave[1]:
中True
的数量发生了变化,有什么原因导致这种情况发生吗chave[1]
是一个tuple
。我的猜测是tuple(setv)
可能来自同一个集合,因为集合没有顺序?在Python中,来自同一简单集的空闲元组是相同的。我迷路了
def sorec(dictrecorrencias):
listarecorrenciaspronta = []
for chave, valor in dictrecorrencias.items():
if len(valor) > 1:
setv = {v[0:3] for v in valor}
if tuple(setv) == chave[1]:
listarecorrenciaspronta.append((chave[0], valor))
return listarecorrenciaspronta
正如许多人在评论中所说的,正如您所怀疑的,python并不总是保持秩序。在某些情况下,他们可能会这样做,但这可能不是一个好主意
如果希望每次都以相同的顺序从集合中获取元素,} docs
sorted()
函数可能是一个简单的解决方案-它将始终以相同的顺序返回集合元素的list
See the python ^{您可以指定一个
key =
参数来定制它对数据排序的顺序相关问题 更多 >
编程相关推荐