我在检查某些数据是否在两个大数据集中时遇到了一些问题。
假设我要以9位数字列表的形式检查其成员身份的数据:[0,1,2,3,4,5,6,7,8]
现在我有两个其他数据集,其中包含此数据的一些随机变体:[1,2,3,6,7,0,8,4,5]
,[8,0,3,1,7,2,3,4,5]
等...
这些数据集dataset1
和dataset2
非常大,包含多达300,000种这类值。
现在我将数据存储为列表,数据集作为包含这些列表的列表存储。使用以下代码,成员资格操作需要太长时间。
# Solution 1, too slow
if data not in (dataset1 + dataset2):
# do something
# Solution 2, also too slow
if data not in dataset1:
if data not in dataset2:
# do something
我可以通过哪种方式优化此测试?我只是选择将数据存储在列表中,但是另一个数据结构会更有效吗?我也可以比较字符串(比如'012345678'
)。