假设我有数百万个字符串 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
Run Code Online (Sandbox Code Playgroud)
使用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
Run Code Online (Sandbox Code Playgroud)
正如我们所看到的,使用速度dict要快得多,但我觉得用dict一堆None仅仅为了利用键的哈希图而
有没有更规范、更优雅的方法来做到这一点?
如果没有值,请使用 aset()而不是 dict
{str(i) for i in range(30000)}
Run Code Online (Sandbox Code Playgroud)
但是,如果您有数百万个项目,例如,也许卸载到 Redis 对于应用程序的内存使用/性能来说会更好