Python:替换多个列表中的项目的出现次数?

时间:2015-10-14 22:29:10

标签: python list replace

我有一些清单:

#list a
a = ['python', 'c++', 'c#', 'c-plus-plus', 'c-sharp', 'csharp', 'cplus']

# list b 
b = ['c++', 'c-plus-plus', 'cplus', 'c-plusplus', 'cplusplus']

# list c
C = ['c#', 'c-sharp', 'csharp']

替换后,list a必须

# list a after replacements
a = ['python', 'cplusplus', 'csharp', 'cplusplus', 'csharp', 'csharp', 'cplusplus']

我想用list b替换list a cplusplus中所有项目的出现,

虽然list clist a的所有内容都必须替换为csharp

重复是可以接受的。

3 个答案:

答案 0 :(得分:3)

试试这个:

['cplusplus' if i in b else i for i in a]

输出:

  

[' python',' cplusplus',' c#',' cplusplus',' c-sharp' ,' csharp',' cplusplus']

Demo

答案 1 :(得分:3)

对于您的特定问题,这将有效:

def replace_synonyms(target,synonyms):
    """ Replaces all occurences of any word in list target with last element in synonyms """
    return [synonyms[-1] if word in synonyms else word for word in target]
a=replace_synonyms(a,b)
a=replace_synonyms(a,c)

答案 2 :(得分:2)

sam2090的代码是正确的,但bc分别需要两次传递。一次通过的方法:

['cplusplus' if i in b else 'csharp' if i in c else i for i in a]