在列表中查找数据并在另一个列表中使用它

Finding data in a list and use it in another list

有没有一种 Python 式的方法可以用列表轻松快速地完成这项工作???? .我用dict找到了一些解决方案,但对于大数据来说可能会很慢。简单来说,在B中找到A中每一项对应的值。

示例:

A = [a,a,b,c,c,c,d,e,e,f,g,g,g,...]
B = [a,1
     b,2
     c,3
     d,2
     e,1
     f,2
     g,5
     ...]

预期结果C(A的长度)

C = [1,1,2,3,3,3,2,1,1,2,5,5,5 ... ]

可以使用replace()

df['C'] = df['A'].replace({'a': 1, 'b': 2, 'c':3, 'd': 2, 'e': 1, 'f':2, 'g': 5})

或者你可以试试

A =  ['a','a','b','c','c','c','d','e','e','f','g','g','g']

B = {'a': 1, 'b': 2, 'c':3, 'd': 2, 'e': 1, 'f':2, 'g': 5}

C = [B[x] if x in B else x for x in A]

出来

[1, 1, 2, 3, 3, 3, 2, 1, 1, 2, 5, 5, 5]

这里有一个 map 完整的答案,尽管 Ama 的列表理解示例是等效的。

A =  ['a','a','b','c','c','c','d','e','e','f','g','g','g']
B = {'a': 1, 'b': 2, 'c':3, 'd': 2, 'e': 1, 'f':2, 'g': 5}
C = list(map(lambda x: B[x], A))
print(C)

[1, 1, 2, 3, 3, 3, 2, 1, 1, 2, 5, 5, 5]

如果您的数据确实很大,您可能需要更复杂的结构,并且可能需要流式处理才能实现这一点。不过,在绝大多数情况下,您不需要这样做。