在列表中查找数据并在另一个列表中使用它
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]
如果您的数据确实很大,您可能需要更复杂的结构,并且可能需要流式处理才能实现这一点。不过,在绝大多数情况下,您不需要这样做。
有没有一种 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]
如果您的数据确实很大,您可能需要更复杂的结构,并且可能需要流式处理才能实现这一点。不过,在绝大多数情况下,您不需要这样做。