值得使用只有键和空值的 Dict 吗?

It it worth to use a Dict with only keys and null values?

因此,在我的利基用例中,我想在 python 中创建一个哈希映射来存储大型列表数据集。这个列表有一个键值作为元组(即 (1,2)),我的目标是搜索列表并查看元组是否存在。

我知道这是可以通过常规列表实现的,但我想要 O(1) 的时间复杂度和哈希映射功能。但是在向字典中添加元素时,我是这样做的:

dictionary[(1,2)] = None

因为我不太关心与键关联的值。

这是好的编码习惯还是我应该使用其他东西?

我建议使用 defaultdict。默认情况下,任何不在字典中的值都是 False.

from collections import defaultdict

lookup = defaultdict(bool)

lookup[(1,2)] = True

示例:

l = [(1,2), (3,4), (5,6)]
for e in l:
    lookup[e] = True

print(lookup[(3,4)])
# True
print(lookup[(8, 9)])
# False

如果不在乎颜值折腾的话,可以用一套。来自 python 源代码(Objects/setobject.c 的第 4 行):

Derived from Lib/sets.py and Objects/dictobject.c.

如果你需要遍历一个集合,你应该使用列表或者根据需要进行转换。