根据Python中的其他值创建一个简短的惟一ID?

2024-10-01 09:38:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中有很多变量,我想用它们来为这些变量生成一个惟一的ID(但是总是为那些相同的匹配变量生成这个ID)。在

我已经使用.encode('hex','strict')来生成一个ID,这个ID似乎可以工作,但是输出值非常长。有没有一种方法可以使用变量生成一个更短的ID?在

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

codec = 'hex'

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

这个输出

^{pr2}$

我意识到hex可能取决于三个变量的长度,所以我想知道是否有另一个编解码器可以/将产生更短的值而不排除任何变量?在

到目前为止,我已经测试了base64bz2hexquopriuuzip来自{a1},但我不确定如何在不删除变量的情况下使这些值中的任何一个生成更短的值。在

有没有其他的编解码器我可以使用,或一种方法来缩短值从其中任何一个不删除唯一性,甚至一个完全不同的方式来产生我需要的?在

我所要做的就是生成一个ID,以便在将这些行加载到数据库中时能够识别这些行。如果相同的值已经存在,则不会在数据库中创建新行。没有安全性要求,只有一个惟一的ID。这些值是在python的其他地方生成的,所以我不能只使用数据库为这些值颁发的ID。在


Tags: 方法id数据库format编解码器julycodecencode
1条回答
网友
1楼 · 发布于 2024-10-01 09:38:04

您可以使用hashlib包中的一些哈希算法:https://docs.python.org/3/library/hashlib.html或python2:https://docs.python.org/2.7/library/hashlib.html

import hashlib
s = "some string"
hash = hashlib.sha1(str.encode(s)).hexdigest() # you need to encode the strings into bytes here

对于同一个字符串,这个哈希值是相同的。 算法的选择取决于所需的字符数和冲突风险(两个不同的字符串生成相同的哈希)。在

相关问题 更多 >