【发布时间】:2021-03-20 10:08:59
【问题描述】:
假设我有数百万个字符串 ID,我想将它们存储在一个变量中并检查是否存在一个 ID,我可以想到两种方法,list 和 dict:
使用list
>>> timeit_a = timeit.Timer('"9999999" in a', setup='a = [str(i) for i in range(3000000)]')
>>> timeit_a.timeit(1)
0.06293477199994868
使用dict
>>> timeit_b = timeit.Timer('"9999999" in b', setup='b = {str(i): None for i in range(3000000)}')
>>> timeit_b.timeit(1)
3.860999981952773e-06 # equal to 0.00000386099
正如我们所见,使用dict 要快得多,但我觉得使用一堆Nones 创建dict 只是为了利用键的哈希图并不是很优雅。
有没有更规范、更优雅的方式来做到这一点?
【问题讨论】:
-
感谢 dup 的建议,因为我一生都找不到那个帖子。
-
是的,使用
set将是执行此操作的规范方式(在底层实现为哈希集)
标签: python