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
Ответы
Ответ 1
В Python 3 range
возвращает ленивый объект последовательности - он не возвращает список. Невозможно переупорядочить элементы в объекте диапазона, поэтому его нельзя перетасовать.
Преобразуйте его в список перед перетасовкой.
allocations = list(range(len(people)))