我有以下三条信息。群组名称、群组类型和群组排名。
举个简单的例子
“妈妈的猫”、“猫”、“Top10”
这个例子与我正在做的事情相去甚远,但你已经明白了基本的想法。
群组名称是大量可能的值(例如大约 20k),而群组类型和群组排名则较小(例如各 10 个)
尝试找到一种更好的方法来为这组事物提供一个简短的唯一标识符,而不是使用带有巨大丑陋 URL 的 sha1
。
还有更好的想法吗?
对所有语言解决方案开放,所以只是将很多程序员固定在这里,因为我想不出更好的标签来分配给它。
谢谢。
编辑:我不久前在其他地方找到的一个解决方案指出,获取 SHA-1
中的最后几个字符并将它们转换为十进制值。不确定这个想法有多可靠以及碰撞的可能性。
EDIT2:使用 mongoDB 并将此 sha1
值与成员一起存储在数据库中,以便目前轻松查询。尝试寻找替代解决方案来在单独的表/集合中创建自动增量
字段,这意味着运行更新脚本时会出现更多查询。
最佳答案
对于 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&....
关于c# - 尝试压缩 Sha1 的大小,也许是制作唯一标识符的更好选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17564244/