用Python中另一个列表中的字符串替换列表中的数字

时间:2019-12-15 17:08:54

标签: python list replace

我有一个数字列表和一个字符串列表:

data = [1, 2, 3, 1, 3]
labels = ['a','b','c']

如何用标签替换数据中的数字,以便获得等于的数据:

['a','b','c','a','c']

我尝试将标签设置为

mappings [('a', 1), ('b',2), ('c',3)]

并使用for循环替换数据变量,但我似乎无法替换列表。

2 个答案:

答案 0 :(得分:1)

带有偏移校正的简单列表理解(在这种情况下,您不需要字典)

data = [1, 2, 3, 1, 3]
labels = ['a','b','c']    

>>> [labels[i-1] for i in data]
['a', 'b', 'c', 'a', 'c']

带有字典:

mappings = {1: 'a', 2: 'b', 3: 'c'}
>>> [mappings[i] for i in data]
['a', 'b', 'c', 'a', 'c']

答案 1 :(得分:0)

您可以为此使用numpy:

import numpy as np
import itertools
np.array(labels)[[a - b for a,b in zip(data, itertools.cycle([1]))]].tolist() 

#  ['a', 'b', 'c', 'a', 'c']