[{u'duration': 2.0,u'filename': u'livestream000000.ts',u'timestamp': 1471582567,u'total_duration': 2.0,u'valid_total_duration': 2.0},{u'duration': 2.2,u'filename': u'livestream000001.ts',u'timestamp': 1471382567,u'total_duration': 2.2,u'valid_total_duration': 2.2}]以上是數據結構需要取出 大于 1371582567 的 時間戳的 數據,除了遍歷 一個個判斷外,有沒有快速的方法,當然 順序需要保障,非常感謝
2 回答

元芳怎么了
TA貢獻1798條經驗 獲得超7個贊
參考數據庫的查詢優化,python也可以考慮先建立B-Tree索引(bintrees)。
建立索引時間不考慮,查詢時間復雜的降低到O(logm), 缺點無序。要保持順序,只能索引存著數組的index,這樣時間復雜度O(m + logm)=O(m) (m取決于刷選后的結果)。
如果m與數組大小n在同一量級,并不比樓上 [i for i in s if i['timestamp'] > 1371582567]
快多少。
綜上所述,如果無需排序 或 需要保持順序但篩選結果遠小于數據量 可以考慮有索引優化。否則還是建議使用python遍歷
- 2 回答
- 0 關注
- 1042 瀏覽
添加回答
舉報
0/150
提交
取消