如何从2个字符串生成唯一键?

2024-04-27 04:01:38 发布

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

假设我有“username1”和“username2”

如何将这两个用户名组合在一起以生成唯一值

如果先输入username2,则无论它们如何组合,值都应相同,反之亦然。两个名称应始终组合成相同的唯一值。字符串长度将不起作用,因为其他用户名可以具有相同的长度

有没有一种简单的方法或技巧


Tags: 方法字符串名称技巧用户名username2username1
2条回答

有许多方法可以生成唯一的值。一种常见的(sysops)方法是从大多数主要语言提供的例程中获取UNIX UUID(通用唯一标识符)的方法。如果出现解析问题,请使用输入字符串中未出现的分隔符

如果用变量替换我的常量字符串“username1”和“username2”,我相信问题已经解决了

import uuid
unique_sep = '|'    # I posit vertical bar as not appearing in any user name

import uuid
unique_ID = uuid.uuid5(uuid.NAMESPACE_X500, "username1" + unique_sep + "username2")
print(unique_ID)

输出:

b2106742-94f5-596d-a461-c977b5982d85

要保留条目顺序的唯一性,只需以任何方便的方式对其进行排序,例如:

names_in = [username1, username2]
unique_ID = uuid.uuid5(uuid.NAMESPACE_X500, min(names_in) + unique_sep + max(names_in))

集合是无序的,Python有一个可散列的不可变集合类型,假设您对唯一键的要求是它可以用作dict键:

def key(a, b):
    return frozenset([a, b])

d = {}
d[key("foo", "bar")] = "baz"
print(d[key("bar", "foo")])

还可以创建已排序的元组:

def key(a, b):
    return tuple(sorted([a, b]))

d = {}
d[key("foo", "bar")] = "baz"
print(d[key("bar", "foo")])

相关问题 更多 >