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: 
No. Recent version of python will raise an exception if you try to iterate over a dictionary that has changed size between iterations.

```
>>> d={'one':1, 'two':2}
>>> for x in d:
...    d['three']=3
...    print x
...
two
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: dictionary changed size during iteration

```

Notice that you don't need to use threads to see this
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.