Подтвердить что ты не робот

TypeError: объект "range" не поддерживает назначение элемента

Я смотрел на некоторый код python 2.x и попытался перевести его на py 3.x но я застрял в этом разделе. Может ли кто-нибудь прояснить, что не так?

import random

emails = {
    "x": "[REDACTED]@hotmail.com",
    "x2": "[REDACTED]@hotmail.com",
    "x3": "[REDACTED]@hotmail.com"
}

people = emails.keys()

#generate a number for everyone
allocations = range(len(people))
random.shuffle(allocations)

Это была ошибка:

TypeError: 'range' object does not support item assignment
4b9b3361

Ответ 1

В Python 3 range возвращает ленивый объект последовательности - он не возвращает список. Невозможно переупорядочить элементы в объекте диапазона, поэтому его нельзя перетасовать.

Преобразуйте его в список перед перетасовкой.

allocations = list(range(len(people)))