Asked By – gate_007
def shuffle(self, x, random=None, int=int): """x, random=random.random -> shuffle list x in place; return None. Optional arg random is a 0-argument function returning a random float in [0.0, 1.0); by default, the standard random.random. """ randbelow = self._randbelow for i in reversed(range(1, len(x))): # pick an element in x[:i+1] with which to exchange x[i] j = randbelow(i+1) if random is None else int(random() * (i+1)) x[i], x[j] = x[j], x[i]
When I run the
shuffle function it raises the following error, why is that?
TypeError: 'dict_keys' object does not support indexing
Now we will see solution for issue: TypeError: ‘dict_keys’ object does not support indexing
Clearly you’re passing in
d.keys() to your
shuffle function. Probably this was written with python2.x (when
d.keys() returned a list). With python3.x,
d.keys() returns a
dict_keys object which behaves a lot more like a
set than a
list. As such, it can’t be indexed.
The solution is to pass
list(d.keys()) (or simply