我有一个列表的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)
在这里使用一个字典,将项目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)
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |