Python 优化成员检查

Python 优化成员检查,python,python-3.x,list,Python,Python 3.x,List,我在检查某些数据是否在两个大数据集中时遇到了一些问题 假设我有我想要以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个此类值 现在,我将数据存储为列表,数据集存储为包含这些列表的列表。使用以下代码,成员资格操作花费的时间太长 # Solutio

我在检查某些数据是否在两个大数据集中时遇到了一些问题

假设我有我想要以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'
)。

能否将数据存储为dict,然后使用try/except进行测试?请尝试使用。集合能够快速进行包容检查。集合擅长包容测试,但它们要求集合中的所有项目都是唯一的。您还将丢失原始数据的顺序(如果这很重要的话)@rickert 如果您将数据存储为dict,然后使用try/except进行测试,则会有一个int的
集,而不是list的
集。集合能够快速进行包容检查。集合擅长包容测试,但它们要求集合中的所有项目都是唯一的。您还将丢失原始数据的顺序(如果这很重要的话)@rickert 您将拥有一组
整数,而不是一组
列表