如何根据列表集中的元素执行字典查询?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何根据列表集中的元素执行字典查询?相关的知识,希望对你有一定的参考价值。
假设我有一个像[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
是否有任何算法可以为列表集的相同值生成相同的键?列表集可以包含字符串,并且不涉及重复。
谢谢你
答案
使用 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
# True
hash(key_1) == hash(key_2)
# True
如果有重复,而且出现的次数也很重要,你可以用一个... sorted
tuple
:
key_1 = tuple(sorted(a))
key_2 = tuple(sorted(b))
这两种方法都假定listsets内的所有值本身是可哈希的。否则,你将需要某种递归方法。
以上是关于如何根据列表集中的元素执行字典查询?的主要内容,如果未能解决你的问题,请参考以下文章