我有一个数字列表和一个字符串列表:
data = [1, 2, 3, 1, 3]
labels = ['a','b','c']
如何用标签替换数据中的数字,以便获得等于的数据:
['a','b','c','a','c']
我尝试将标签设置为
mappings [('a', 1), ('b',2), ('c',3)]
并使用for循环替换数据变量,但我似乎无法替换列表。
答案 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']