Question: Some stated that python dictionary is thread safe. Does it mean I can or cannot modify the items in a dictionary while iterating over it?

Answer: 
The two concepts are completely different. [Thread safety](http://en.wikipedia.org/wiki/Thread_safety) means that two threads cannot modify the same object at the same time, thereby leaving the system in an inconsistent state.

That said, you cannot modify a dictionary while iterating over it. See the [documentation.](http://docs.python.org/c-api/dict.html). 

> 
> The dictionary p should not be mutated during iteration. It is safe (since Python 2.1) to 
>  modify the values of the keys as you iterate over the dictionary, but only so long as the 
>  set of keys does not change.
> 
> 
>
You cannot iterate over a dictionary if you **add** or **delete** elements in the another thread concurrently. You can get "RuntimeError: dictionary changed size during iteration" or "KeyError" errors.

See [**live example**](https://repl.it/@IvanErgunov/iteratedictthreadsafe-1) and you can play with it.

And yes, you can iterate, change values of elements, get elements of it without exceptions in different threads concurrently.