今天把一个150多万的key装进dict, 对数据量上百万的查询dict, 判断某个key是否在dict中,听某些人(网上)说用 key in dict.keys();速度会比 dict.has_key(key)要快很多。
结果我使用了下面的语句:
if key in dict.keys():
value = dict[key]
do_something_else
由于查询的数据量上万,程序跑了半小时还没见反应。直接kill了。
后面想起直接用
if key in dict:
value = dict[key]
do_something_else
不到10秒就跑完了。
原因分析:dict.keys()返回的是一个List, 可见时间复杂度是O(n), 失去了dict的本质。直接用in 就是O(1)的操作。
很多东西还是要自己验证~~