在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/人工智能  Python/ 求問一下數(shù)據(jù)結(jié)構(gòu),如何快速取出大于某個(gè)時(shí)間戳的所有數(shù)據(jù)

求問一下數(shù)據(jù)結(jié)構(gòu),如何快速取出大于某個(gè)時(shí)間戳的所有數(shù)據(jù)

[{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}]

以上是數(shù)據(jù)結(jié)構(gòu)
需要取出 大于 1371582567 的 時(shí)間戳的 數(shù)據(jù),除了遍歷 一個(gè)個(gè)判斷外,有沒有快速的方法,當(dāng)然 順序需要保障,非常感謝

回答
編輯回答
壞脾滊

你所謂的快速是什么概念?時(shí)間復(fù)雜度O(1)?

2017年12月24日 18:07
編輯回答
舊城人

參考數(shù)據(jù)庫的查詢優(yōu)化,python也可以考慮先建立B-Tree索引(bintrees)。

建立索引時(shí)間不考慮,查詢時(shí)間復(fù)雜的降低到O(logm), 缺點(diǎn)無序。要保持順序,只能索引存著數(shù)組的index,這樣時(shí)間復(fù)雜度O(m + logm)=O(m) (m取決于刷選后的結(jié)果)。
如果m與數(shù)組大小n在同一量級,并不比樓上 [i for i in s if i['timestamp'] > 1371582567]快多少。

綜上所述,如果無需排序 或 需要保持順序但篩選結(jié)果遠(yuǎn)小于數(shù)據(jù)量 可以考慮有索引優(yōu)化。否則還是建議使用python遍歷

2017年1月28日 21:01
編輯回答
陌南塵
[i for i in s if i['timestamp'] > 1371582567]
2018年4月17日 05:27