2013-12-10 3 views
14

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

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: «Диапазон» объект не поддерживает назначение элемента

ответ

29

В Python3 range является объектом генератора - он не возвращает список. Преобразуйте его в список перед перетасовкой.

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

Возможно, вам знакомы с эквивалентом xrange для python3? – user2840982

+2

«диапазон» Python3 идентичен «xrange» python2. Старый «диапазон» больше не существует. – Tim

Смежные вопросы