为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

梵蒂冈之花 2022-10-18 17:52:20
假设我有一个像 [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是否有任何算法可以为列表/集合的相同值生成相同的键?列表/集合可以包含字符串并且不涉及重复项。谢谢
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

使用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))

这两种方法都假设列表/集合中的所有值本身都是可散列的。否则,您将需要某种递归方法。


查看完整回答
反对 回复 2022-10-18
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信