python列表:合并和替换

时间:2014-08-11 10:03:39

标签: python pandas

我正在寻找一种更优雅/ Pythonic的方式来完成以下任务:

我有两个字符串列表AB,其中B几乎是A的一个子集,但B有一个后缀*对于某些元素。我的目标是将A中的元素替换为B中具有后缀的相应元素。一个例子:

A = ['abcd', 'ddse', '123d', 'aaaaa']
B = ['ddse', 'aaaaa*']

我希望获得['abcd', 'ddse', '123d', 'aaaaa*']列表。我能想到的方法是将A拆分并转换为两列数据框并与B合并,然后将*列放回B中的列。但这看起来并不优雅,因为我需要做很多这样的操作。有没有更好的方法呢?

谢谢!

4 个答案:

答案 0 :(得分:1)

这个怎么样?:

def doit(A,B):
    for n,i in enumerate(A):
        if i + '*' in B:
            A[n] = i + '*'

答案 1 :(得分:1)

如果*总是在最后,那么使用此代码非常简单:

C = [(x + '*') if ((x + '*') in B) else x for x in A]

要对列表列表执行相同操作,请尝试此操作;您将在列表C中获得结果:

C = []
for A, B in zip(A_L, B_L):
    C.append([x + '*' if ((x + '*') in B) else x for x in A])

答案 2 :(得分:1)

此?

[ e+'*' if e+'*' in B else e for e in A]

答案 3 :(得分:0)

因此,您真的要检查a的每个元素Aa*是否有B元素,如果有a* aA替换a*中的#make a copy of A with * appended to every element C = [a + "*" for a in A] #loop through C and check for i in range(len(A)): if C[i] in B: A[i] = C[i]

{{1}}