Question: currently I'm displaying keys only, each in new line:

```
'<br/>'.join(mydict)

```

how do I display them like *key*:: *value*, each in the new line?

Answer: 
That, or an even cooler solution using `join` to join both items *and* the (key,value) pairs, avoiding the now-obsolete `%` interpolation, using only a single dummy variable `_`, and dropping the redundant list comprehension:

```
"<br/>".join(":: ".join(_) for _ in mydict.items())

```

Be aware that dicts have no ordering, so without `sorted()` you might not get what you want:

```
>>> mydict = dict(a="A", b="B", c="C")
>>> ", ".join("=".join(_) for _ in mydict.items())
'a=A, c=C, b=B'

```

This also only work when all keys and values are strings, otherwise `join` will complain. A more robust solution would be:

```
", ".join("=".join((str(k),str(v))) for k,v in mydict.items())

```

Now it works great, even for keys and values of mixed types:

```
>>> mydict = {'1':1, 2:'2', 3:3}
>>> ", ".join("=".join((str(k),str(v))) for k,v in mydict.items())
'2=2, 3=3, 1=1'

```

Of course, for mixed types a plain `sorted()` will not work as expected. Use it only if you know all keys are strings (or all numeric, etc). In the former case, you can drop the first `str()` too:

```
>>> mydict = dict(a=1, b=2, c=2)
>>> ", ".join("=".join((k,str(v))) for k,v in sorted(mydict.items()))
'a=1, b=2, c=3'

```
I liked what Filip Dupanović did above. I modified this to be python3-ish using `str.format` method.

```
'<br/>'.join(['{0}:: {1}'.format(key, value) for (key, value) in d.items()])

```

I modified the above to generate a string I could feed to a SQL table create statement.

```
fieldpairs = ','.join(['{0} {1}'.format(key, value) for (key, value) in HiveTypes.items()])

```