Fast Dictionary Access
Scott David Daniels
Scott.Daniels at Acm.Org
Sat Jun 27 16:01:01 EDT 2009
Thomas Lehmann wrote:
> In C++, programming STL you will use the insert method which always
> provides a position and a flag which indicates whether the position
> results from a new insertion or an exisiting element. Idea is to have
> one search only.
>
> <code>
> if data.has_key(key):
> value = data[key]
> </code>
>
> But this does mean (does it?) that the dictionary is searched two
> times! If so, can somebody show me how to do this in one step?
To get almost the same result (assuming value is already loaded):
value = data.get(key, value)
Otherwise, as others have said:
if key in data:
value = data[key]
The form:
try:
value = data[key]
except KeyError:
pass
works, but is not terribly efficient unless failures are rare.
And this is a micro-optimization, measure before changing your
program structure away from the clearest code you can write.
--Scott David Daniels
Scott.Daniels at Acm.Org
More information about the Python-list
mailing list