+-

我有一个列表说list1,我想将其元素映射到相应的值.
code = ['a','b','c']
value = [1,2,3]
list1 = ['a','a','b','c','b','b','a','c']
这是我写的代码.
def codeToValue(code,value,list1):
list1_out = [0 for i in range(len(list1))]
for i in range(len(list1)):
for j in range(len(code)):
if list1[i] == code[j]:
list1_out[i] = value[j]
return list1_out
我得到了所需的输出.
print(codeToValue(code,value,list1))
[1, 1, 2, 3, 2, 2, 1, 3]
这个代码适用于小型列表,但是当我使用大量列表运行它时,由于两个循环,它需要花费太多时间.
请提出建议,以便提高效率.
任何建议将不胜感激.
最佳答案
您可以使用
dict(建立感谢
zip())和 list comprehension:
mapping = dict(zip(code, value))
out = [mapping[v] for v in list1]
关于效率:这个片段受益于O(1) dict-lookup(虽然你仍然需要首先通过dict的值迭代),并且因为已知列表推导比plain for循环更快,所以你应该期望使用这个代码获得更好的性能.
如果这对您的使用来说仍然太慢,您应该在大数据处理中使用专用库,如pandas.
点击查看更多相关文章
转载注明原文:python – 如何有效地将列表的元素映射到它们的值? - 乐贴网