1

我有一个包含 n 个列表的列表 DATA,还有一个包含 n 个元素的列表 LABELS,对应于 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"
4

1 回答 1

5

在这里使用字典,其中项目DATA作为键,相应项目LABELS作为值。

字典提供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'
于 2013-06-27T11:42:06.093 回答