As none of the answers provide you with a random string consisting of characters 0-9, a-z, A-Z: Here is a working solution which will give you one of approx. 62^16 = 4.76724 e+28 keys:
import random, string
x = ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for _ in range(16))
print(x)
It is also very readable without knowing ASCII codes by heart.
There is an even shorter version since python 3.6.2:
import random, string
x = ''.join(random.choices(string.ascii_letters + string.digits, k=16))
print(x)