如何根据列表/集中的元素执行字典查找?

假设我有一个像 [1, 2, 3, 4, 5] 这样的值列表,并且我根据这些值生成了一些字典键,所以如果我有另一个列表 [5, 4, 3, 2, 1] 它会生成相同的键能够对相同的值执行字典查找。


a = [1, 2, 3, 4, 5]

key_1 = generate_key(a)


b = [5, 4, 3, 2, 1]

key_2 = generate_key(b)


dict = {...}

assert dict[key_1] == dict[key_2]

assert key_1 == key_2

是否有任何算法可以为列表/集合的相同值生成相同的键?列表/集合可以包含字符串并且不涉及重复项。


谢谢


梵蒂冈之花
浏览 67回答 1
1回答

猛跑小猪

使用frozenset,因为没有重复:a = [1, 2, 3, 4, 5]b = [5, 4, 3, 2, 1]key_1 = frozenset(a)key_2 = frozenset(b)key_1 == key_2# Truehash(key_1) == hash(key_2)# True如果有重复并且出现的次数很重要,您可以使用:sorted tuplekey_1 = tuple(sorted(a))key_2 = tuple(sorted(b))这两种方法都假设列表/集合中的所有值本身都是可散列的。否则,您将需要某种递归方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python