1

n 個のリストのリスト DATA と、DATA 内の要素のラベルに対応する n 個の要素の別のリスト LABELS があります。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

ここでは dict を使用し、 from の項目DATAをキーとして、対応する from の項目LABELSを値として使用します。

dict は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 に答える