我有一个很大的字符串列表,例如:
full_log = ['AB21','BG54','HG89','NS72','Error','CF54','SD62','KK02','FE34']
以及多个小字符串列表,例如:
tc1 = ['HG89','NS72']
tc2 = ['AB21','BG54']
tc3 = ['KK02','FE34']
tc4 = ['CF54','SD62']
我想在维护序列的大列表中找到每个小列表,这样输出会是这样的:
tc2-tc1-Er-tc4-tc3
我想知道有没有什么直截了当的,像Python一样的方法来处理这种情况。你知道吗
如果所有短列表长度相等,您可以创建一个
dict
,其中key是tuple
字符串,value是其中一个标签。你可以穿过full_log
,取一个长度合适的块,看看是否可以从dict
找到它。你知道吗如果短列表的长度不同,则上述方法将不起作用,因为从
full_log
获取的块长度不是常量。在这种情况下,一种可能的解决方案是将短列表中的项添加到树结构中,其中叶节点是一个标签。然后针对full_log
中的每个索引,查看是否可以从树中找到路径。如果找到路径,则向前跳转路径长度,否则从下一个索引开始尝试:上面使用的树有点像trie,但节点可以包含子节点或值(标签)。你知道吗
可以使用Set进行模式匹配:
输出:
{'HG89', 'NS72'}
您需要为小列表中的元素创建一个映射(字典):
然后可以使用迭代器在列表上循环:
如果您不介意扩展第一个列表中的“错误”条目:
然后你可以使用列表理解:
相关问题 更多 >
编程相关推荐