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

2024-03-28 10:35:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从嵌套的字符串列表中筛选字符串。我已经阅读了现有的答案,并尝试使用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 

如果找到“a1”,则上面的代码用于过滤“aX”,否则用于过滤“cX”。你知道吗

我得到的结果是:

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

在第二步中,我的代码可能有什么问题,有没有更好的方法来执行“根据特定字符串筛选特定字符串”?你知道吗


Tags: or字符串a2stringreturnifdefa1