这个问题是关于匹配一个列表中的字符串与匹配另一个列表中的字符串。我试图找出进行这种匹配的最佳方法。我下面的示例很小,但是我必须将相同的想法应用到更大的列表中。因此,我在一个列表中有一组文件名和路径,然后在另一个列表中有一个部分文件名的列表,例如:
list1 = ['/../../abc_file1.txt',
'/../../abc_extrafile1.txt',
'/../../abc_file2.txt',
'/../../abc_file3.txt',
'/../../abc_extrafile3.txt']
然后我有一个不同的列表
['file1', 'extrafile1', 'file2', 'file3', 'extrafile3']
所以我想做的就是得到一个匹配,该匹配生成一个字典,例如:
{'file1': '/../../abc_file1.txt',
'extrafile1': '/../../abc_extrafile1.txt',
'file2': '/../../abc_file2.txt',
'file3': '/../../abc_file3.txt',
'extrafile3': '/../../abc_extrafile3.txt'}
因此,文件名之间有一些重叠,我需要注意这一点。
有很多方法可以执行这样的操作,但是我不确定哪种方法最有效地匹配1000或10,000个条目的列表。似乎可以通过字典理解或lambda来完成,但这似乎有些复杂。我可以编写一个原始循环,但这似乎并不是特别有效。
关于如何管理此类匹配问题的任何建议。
您可以dict comprehension
按照建议运行a ,然后检查split
第一个list元素中的a(以考虑重叠)并删除扩展名:
list1 = ['/../../abc_file1.txt',
'/../../abc_extrafile1.txt',
'/../../abc_file2.txt',
'/../../abc_file3.txt',
'/../../abc_extrafile3.txt']
list2 = ['file1', 'extrafile1', 'file2', 'file3', 'extrafile3']
my_dict = {k: v for v in list1 for k in list2 if k == v.split('_')[1][:-4]}
输出:
{'file1': '/../../abc_file1.txt', 'extrafile1': '/../../abc_extrafile1.txt', 'file2': '/../../abc_file2.txt', 'file3': '/../../abc_file3.txt', 'extrafile3': '/../../abc_extrafile3.txt'}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句