2017-07-05 73 views
0

我在python中有許多變量,我想用這些變量爲這些變量生成一個唯一的ID(但是這些ID始終爲那些相同的匹配變量生成)。根據Python中的其他值創建一個簡短的唯一ID?

我已經使用.encode('hex','strict')產生一個ID,其中似乎工作,但輸出值很長。有沒有辦法用變量產生一個更短的 ID

myname = 'Midavalo' 
mydate = '5 July 2017' 
mytime = '8:19am' 

codec = 'hex' 

print "{}{}{}".format(myname, mydate, mytime).encode(codec,'strict') 

此輸出

4d69646176616c6f35204a756c792032303137383a3139616d 

hex意識到它可能是依賴於三個變量的長度,所以我不知道是否有可以/會產生更短的值,而另一種編解碼器排除任何變量?

到目前爲止,我已經測試base64bz2hexquopriuu,從7.8.4. Python Specific Encodingszip,但我不能確定如何獲得任何這些不去除變量產生短值。

有沒有另一種編解碼器我可以使用,或者一種方法來縮短它們中的任何一個的值而不去除唯一性,甚至是完全不同的方式來產生我需要的東西?

我所要做的就是生成一個ID,以便在將它們加載到數據庫時識別這些行。如果相同的值已經存在,它不會在數據庫中創建一個新行。沒有安全要求,只有一個唯一的ID。這些值在其他地方生成到python中,所以我不能僅僅爲這些值使用數據庫發佈的ID。

+0

在堆棧溢出時禁止向場外資源請求推薦。嘗試搜索「獨特的哈希函數」。許多算法都有一個參數,因此您可以指定輸出長度。 – Prune

+0

您絕對不需要17(或更多)個字節來表示時間戳(更不用說只用1分鐘的分辨率)。 –

+1

@Prune我不關注 - 你在談論什麼非現場資源的建議?我只是想從我的值中創建一個ID – Midavalo

回答

相關問題