从嵌套的字符串列表中筛选特定字符串

时间:2018-01-07 15:22:50

标签: python filtering nested-lists defaultdict

我需要从嵌套的字符串列表中过滤字符串。我已阅读现有答案并尝试使用defaultdict来执行此操作:

import sys
from collections import defaultdict

def isRelevant(string_set):
    if string_set.find("a1") != -1 or string_set.find("a2") != -1 or string_set.find("b3") != -1:
        return True
    else:
        return False  

def data_filter(string_matrix):
  new_list = []
  for string_set in string_matrix:
    temp = filter(isRelevant, string_set)
    new_list.append(temp)
  return new_list

def main(): 
  string_matrix = [ ['a1','a2','a3','b1','b2','b3'],['a1','a2','a3','b1','b2','b3','c1','c2','c3'] ]

  filtered_strings = data_filter(string_matrix)
  for each in filtered_strings:
    print each,

if __name__ == '__main__':
  main()

以上是包含字符串的嵌套列表列表的工作示例。

此示例运行良好并返回预期输出['a1', 'a2', 'b3'] ['a1', 'a2', 'b3']

我现在尝试创建的是输出

的情况
[ ['a1','a2','a3'],['c1','c2','c3'] ]

目的是基本上说"如果你发现' a1',只过滤' aX'如果您发现' c1',请过滤“cX'”。 意味着根据特定字符串过滤特定字符串。

我尝试将isRelevant方法更改为:

def isRelevant(string_set):
    if string_set.find("a1") != -1:
      if string_set.find("a1") != -1 or string_set.find("a2") != -1 or string_set.find("a3") != -1:
        return True
    elif string_set.find("c1") != -1 or string_set.find("c2") != -1 or string_set.find("c3") != -1:
      return True
    else:
      return False 

上面的代码旨在过滤' aX'如果' a1'找到,并以' cX'。

进行过滤

我得到的输出是:

['a1'] ['a1', 'c1', 'c2', 'c3']

第二步中我的代码可能存在什么问题,是否有更好的方法根据特定字符串执行过滤特定字符串'?

0 个答案:

没有答案