Python:比较两个列表并更新多个值

时间:2014-04-18 02:14:59

标签: python string list

这是一个跟进问题: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"如果条件,任何提示将不胜感激。

1 个答案:

答案 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']