Python3:根据子字符串在两个列表之间匹配元素

克里希纳卜

这个问题是关于匹配一个列表中的字符串与匹配另一个列表中的字符串。我试图找出进行这种匹配的最佳方法。我下面的示例很小,但是我必须将相同的想法应用到更大的列表中。因此,我在一个列表中有一组文件名和路径,然后在另一个列表中有一个部分文件名的列表,例如:

    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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python匹配两个列表之间的列表元素中的部分字符串

Python3:删除两个分隔字符之间的子字符串

Python:检查两个列表之间的字符串是否部分匹配

通过python中的regex优化查找两个列表之间的匹配子字符串

匹配字符串中两个索引之间的子字符串

在两个匹配的字符串之间选择子字符串

Python3:查找字符串的两个子字符串之间的长度

根据最后 4 个字符从两个列表中返回匹配的字符串

列表理解以识别两个列表之间的字符串匹配

迭代两个列表并根据列表中的子字符串进行连接

比较两个文件并根据匹配的子字符串提取行?

如何使用python有效地匹配两个大列表之间的字符串?(510.000.000比较)

查找两个文件之间的子字符串匹配

获取两个列表之间最接近的字符串匹配

匹配两个符号之间的字符串并替换

如何在 Python3 中创建一个函数以使用正则表达式从两个标记之间的字符串返回子字符串?

如何比较两个列表以保持匹配的子字符串?

如何`str.join`两个列表到Python3中所有组合的字符串?

如何在值中包含字符串的python3中比较两个嵌套字典的列表

查找两个“ /”之间的子字符串

从两个单词之间提取子字符串

根据通用子字符串匹配两个字符串

匹配两个Python字符串中的字符

Python3在两个字符串之间切换

在每次匹配的两个子字符串之间替换子字符串

如何打印出两个“ |”之间的子字符串 在python中?

当涉及子进程时,使用 Python 在两个特定字符串之间复制行

python中两个列表中的确切字符串匹配

根据python中的另一个列表匹配一个列表的元素,其中一个列表的元素是另一个列表的元素的子字符串