这是一个跟进问题:Python: Compare two lists and update value in list2 based on value in list1
我有两个清单:
words = ['vestments', 'absence', 'windless']
prons = ['vEstm@nts', 'abs@nts', 'wIndl@s']
对于word
匹配if条件的项目,请处理pron
中的相应项目。
例如,如果" less"可在word
中的项目中找到,将l@s
更改为lIs
。如果nts
中找不到word
是字符串的一部分,则将@nts替换为pron
中的@ns。
我试过了:
for (i, word) in enumerate(words):
if "less" in word:
prons[i] = '\n'.join(prons[i])
prons[i] = prons[i].replace("l@s", "lIs")
if "nts" not in word:
prons[i] = prons[i].replace("@nts", "@ns")
期望的输出:
pron = ['vEstm@nts', 'abs@ns', 'wIndlIs']
但我的输出是:
pron = ['vEstm@ns', 'abs@ns', 'wIndlIs']
看起来代码完全没有在我的" nts"如果条件,任何提示将不胜感激。
答案 0 :(得分:0)
您可以通过两次传递来完成,如下所示:
result = [b.replace('l@s', 'lIs') if 'less' in a else b for a,b in zip(words, prons)]
result = [b.replace('@nts', '@ns') if 'nts' not in a else b for a,b in zip(words, result)]
我将传球浓缩为一遍如下:
result = [b.replace('l@s', 'lIs') if 'less' in a else b.replace('@nts', '@ns') if 'nts' not in a else b for a,b in zip(words, prons)]
>>> print result
['vEstm@nts', 'abs@ns', 'wIndlIs']