Creating a random dictionary in python

It can be done with the random module and comprehensions:

from random import sample, randrange

d = {i: sample([j for j in lst if i != j], randrange(1, len(lst) - 1))
     for i in lst}

If you first use random.seed(0) for reproducible data, you will get:

{1: [3, 2], 2: [4, 3], 3: [2, 4], 4: [3, 1]}
{1: [3], 2: [1], 3: [4, 1], 4: [1, 3]}
{1: [3, 2], 2: [3, 4], 3: [4], 4: [2, 3]}