2017-07-05 47 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

回答