亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求問一下數據結構,如何快速取出大于某個時間戳的所有數據

求問一下數據結構,如何快速取出大于某個時間戳的所有數據

[{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 回答

?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

[i for i in s if i['timestamp'] > 1371582567]

查看完整回答
反對 回復 2018-10-29
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

參考數據庫的查詢優化,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遍歷


查看完整回答
反對 回復 2018-10-29
  • 2 回答
  • 0 關注
  • 981 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號