I was looking at some python 2.x
code and attempted to translate it to py 3.x
but I'm stuck on this section. Could anyone clarify what is wrong?
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)
This was the error given:
TypeError: 'range' object does not support item assignment
The Python "TypeError: 'int' object does not support item assignment" occurs when we try to assign a value to an integer using square brackets. To solve the error, correct the assignment or the accessor, as we can't mutate an integer value.
The Python "TypeError: 'type' object does not support item assignment" occurs when we assign a data type to a variable and use square brackets to change an index or a key. To solve the error, set the variable to a mutable container object, e.g. my_list = [] .
The Python "TypeError: 'tuple' object does not support item assignment" occurs when we try to change the value of an item in a tuple. To solve the error, convert the tuple to a list, change the item at the specific index and convert the list back to a tuple.
The Python "TypeError: 'str' object does not support item assignment" occurs when we try to modify a character in a string. Strings are immutable in Python, so we have to convert the string to a list, replace the list item and join the list elements into a string.
In Python 3, range
returns a lazy sequence object - it does not return a list. There is no way to rearrange elements in a range object, so it cannot be shuffled.
Convert it to a list before shuffling.
allocations = list(range(len(people)))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With