Safely add a key to a dict only if it does not already exist?

Steven D'Aprano steve+comp.lang.python at pearwood.info
Fri Jan 18 23:07:13 EST 2013


I wish to add a key to a dict only if it doesn't already exist, but do it 
in a thread-safe manner.

The naive code is:

if key not in dict:
    dict[key] = value


but of course there is a race condition there: it is possible that 
another thread may have added the same key between the check and the 
store.

How can I add a key in a thread-safe manner?

Any solutions must work with built-in dicts, I cannot use a custom dict 
subclass.


-- 
Steven



More information about the Python-list mailing list