I recently came across this and it made a huge difference in some of my programs. I figured the issue was just because I was a noob, but I found it (via a
grep search) in tons of other production codes.If you're interested in seeing if a dictionary,
mydict has the key,
'mykey', the following is O(N): if 'mykey' in mydict.keys(): # do stuffwhile the following is O(1): if 'mykey' in mydict: # do stuffThis is because the dictionary will use a hash-lookup with the latter (like searching a
set) while the former will first generate a list and then iterate over it for the
in statement (so it may scale as 2N but that is still O(N)).By the way, these are based on average case. See Time Complexity for more detail.