![](/img/trans.png)
[英]Does creating a tuple of a set in python always result in the same tuple
[英]Does Python tuple(set()) maintains order?
我無法理解為什么該程序在我運行它的不同時間給出不同的結果,這才是真正的問題。 我很確定問題就在這里,而不是在代碼上,我已經運行了一些斷言來檢查下面代碼的輸入是否每次都相同,但我仍然得到不同的結果。
輸入來自磁盤中的泡菜文件,一旦程序運行,結果保持不變,我多次調用該函數或多次打開泡菜文件,但如果我重新啟動程序,結果會發生變化。
我驗證了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 set
並不總是保持順序。 在某些情況下他們可能會這樣做,但指望這一點可能不是一個好主意。
如果您想每次都以相同的順序從集合中獲取元素, sorted()
function 可能是一個簡單的解決方案 - 它總是會以相同的順序返回集合元素的list
。 請參閱 python sorted
文檔。
setv = {v[0:3] for v in valor}
if tuple(sorted(setv)) == chave[1]:
listarecorrenciaspronta.append((chave[0], valor))
您可以指定一個key =
參數來自定義它對數據進行排序的順序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.