我正在使用Python(2.7.9),并试图通过这些元组的元素列表来过滤元组列表.特别是,我的对象具有以下形式:
tuples = [('a', ['a1', 'a2']), ('b',['b1', 'b2']), ('c',['c1', 'c2'])]
filter = ['a', 'c']
Run Code Online (Sandbox Code Playgroud)
我是Python的新手,过滤我可以发现的元组的最简单方法是使用以下列表理解:
tuples_filtered = [(x,y) for (x,y) in tuples if x in filter]
Run Code Online (Sandbox Code Playgroud)
生成的筛选列表如下所示:
tuples_filtered = [('a', ['a1', 'a2']), ('c',['c1', 'c2'])]
Run Code Online (Sandbox Code Playgroud)
不幸的是,这种列表理解似乎效率很低.我怀疑这是因为我的元组列表比我的过滤器,字符串列表大得多.特别是,过滤器列表包含30,000个单词,元组列表包含大约134,000个2元组.
2元组的第一个元素在很大程度上是不同的,但有一些重复的第一个元素的实例(实际上不确定有多少,但与列表的基数相比,它并不多).
我的问题:是否有更有效的方法来过滤这些元组的元素列表的元组列表?
(如果这是偏离主题或欺骗,请道歉.)
相关问题(未提及效率):