从标签列表中获取项目x(在DATA中)的标签的快速方法

shn*_*shn 1 python list

我有一个列表的n列表数据,另一个列表LABELS的n个元素对应于DATA中元素的标签.从DATA获取某些元素x的标签的最快方法是什么?def getLabel(x): ...

比以往更快的方式: LABELS[ DATA.index(x) ]

DATA = [ [2,5,8], [2,4,3], [5,5,7], [9,8,4] ]
LABELS = [ "AAA", "BBB", "AAA", "CCC" ]

print getLabel( [5,5,7] ); # will prints "AAA"
Run Code Online (Sandbox Code Playgroud)

Ash*_*ary 5

在这里使用一个字典,将项目DATA作为键,相应的项目LABELS作为值.

Dicts提供O(1)查找,而在列表中搜索是O(N)操作.

>>> DATA = [ [2,5,8], [2,4,3], [5,5,7], [9,8,4] ]
>>> LABELS = [ "AAA", "BBB", "AAA", "CCC" ]
>>> get_labels = {tuple(x):y for x,y in zip(DATA,LABELS)} 
>>> get_labels[5,5,7]
'AAA'
>>> get_labels[9,8,4]
'CCC'
Run Code Online (Sandbox Code Playgroud)

  • 这取决于您查询标签的频率.如果你多次这样做,构建字典是值得的.如果你这样做一次,你的方法会更好. (3认同)