我有以下三个信息。组名,组类型和组排名。
作为一个简单的例子
“妈妈的猫”,“猫”,“ Top10”
这个例子与我正在做的事情相去甚远,但是您已经有了基本的想法。
组名是可能值的较大选择(例如20k左右),组类型和组排名较小(每个组10个)
试图找到一种更好的方法为这些事物提供简短的唯一标识符,而不是必须使用带有巨大丑陋URL的sha1
。
还有更好的主意吗?
对所有语言解决方案开放,因此,请在这里钉很多程序员,因为我想不出更好的标签来分配给它。
谢谢。
编辑:我不久前在其他地方找到的一种解决方案,是关于将SHA-1
中的最后几个字符转换为十进制值的。不确定此想法的可靠性和碰撞的可能性。
EDIT2:使用mongoDB并将此sha1
值与成员一起存储在DB中,以方便当前查询。试图找到在单独的表/集合中创建autoincrement
字段的替代解决方案,这意味着在运行更新脚本时会有更多查询。
最佳答案
对于python映射,您可以将(grouptype,groupranking,groupname)用作字典键,或者可以通过使用grouptype-> groupranking-> groupname的键拆分类似于字典的字典来减小字典的大小。
为了生成唯一的URL,grouptype.rank.name或与/相同的问题是作为分隔符-您可以使用有效的url类型函数以%nn格式替换每个无效字符。
您可以使用urllib.quote('/'.join([baseurl, grouptype, groupranking, groupname])
生成这样的路径,甚至可以使用baseurl + urllib.urlencode({'grouptype':grouptype,'groupranking':groupranking,'groupname':groupname})
-后者将导致典型的查询格式为baseurl?grouptype = Whatever&....