我有两个包含字符串的列表。我想获取base_list
中的每一项,并搜索该custom list
中的任何值中的前3个字符是否匹配。如果存在匹配项,请将base_list
中的原始值替换为custom_list
中的值。如果没有匹配项,则保留原始值。在
base_list = ["abc123", "cde123", "efg456", "ghi123"]
custom_list = ["abc321", "efg654"]
期望输出:
^{pr2}$最后,我还想将这个新的modified_base_list
写成一个包含这些项的文件,每行一个。在
我试过:
modified_base_list = []
for custom in custom_list:
for base in base_list:
if custom[:3] == base[:3]:
modified_base_list.append(custom)
else:
modified_base_list.append(base)
print(modified_base_list)
with open('newfile.txt', 'w') as f:
for s in modified_base_list:
f.write(s)
***编辑问题以说明包含15k+行的列表,以找到更快的方法。在
使用^{} 尝试以下操作:
输出:
^{pr2}$这是一个改变原始列表的解决方案,只替换那些存在所需匹配项的列表:
当然,如果不想修改原始列表,可以先使用
modified_base_list = base_list[:]
创建一个列表。在您也可以遵循自己的想法,但在这种情况下,您必须确保主要是在
^{pr2}$base_list
上迭代,并且不会多次添加项:您也可以在这里使用
for…else
,而不是该实用程序变量found
:可以使用包含生成器表达式的列表理解:
请注意,我假设相同的3个字符前缀在
custom_list
中多次出现,那么您只希望使用第一个实例。在相关问题 更多 >
编程相关推荐