迭代遍历列表,同时在python中查找来自不同列表的匹配元素

时间:2014-10-13 19:30:23

标签: python string list

我有一些随机字符串列表:

list_test = ["adam", "adam", "lori", "conrad", "lori", "adam"]

然后我还有两个列表,一个我想测试匹配的匹配,另一个决定用什么替换项目。

sReplace = ["adam", "lori"]
sReplaceWith = ["carol", "robert"]

我想要做的是搜索list_test,如果该列表中的任何项目匹配sReplace中的任何项目,如果它确实将其替换为来自匹配索引号ex的sReplaceWith中的项目。

final_list = ["carol", "carol", "robert", "conrad", "robert", "carol"]

知道如何做到这一点吗?

3 个答案:

答案 0 :(得分:4)

我创建一个字典,其中Replace为键,ReplaceWith为值。

replacements = dict(zip(sReplace, sReplaceWith))

>>> replacements
{'adam': 'carol', 'lori': 'robert'}

然后在列表理解中,您可以使用get,它将从字典中查找替换,如果不存在则使用原始单词。

final_list = [replacements.get(i,i) for i in list_test]

>>> final_list
['carol', 'carol', 'robert', 'conrad', 'robert', 'carol']

答案 1 :(得分:2)

list_test = ["adam", "adam", "lori", "conrad", "lori", "adam"]
sReplace = ["adam", "lori"]
sReplaceWith = ["carol", "robert"]

print([sReplaceWith[sReplace.index(x)] if x in sReplace else x for x in list_test ])
['carol', 'carol', 'robert', 'conrad', 'robert', 'carol']

如果sReplaceWith[sReplace.index(x)]位于要替换的列表中,则使用x添加相应索引处的元素,否则只需将x添加到列表中

答案 2 :(得分:0)

完成没有词典:

list_test = ["adam", "adam", "lori", "conrad", "lori", "adam"]
sReplace = ["adam", "lori"]
sReplaceWith = ["carol", "robert"]
for list_index in range(0, len(list_test)):
    list_item = list_test[list_index]
    if list_item in sReplace:
        replace_with = sReplaceWith[sReplace.index(list_item)]
        list_test[list_index] = replace_with
print list_test

输出:

['卡罗尔'卡罗尔'罗伯特','康拉德'罗伯特',& #39;卡罗尔']