1. ホーム
  2. python

[解決済み] TypeError: 'range' オブジェクトはアイテムの割り当てをサポートしていません。

2022-01-29 19:50:59

質問

を見ていたのですが 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

解決方法は?

Python 3 の場合。 range は遅延シーケンスオブジェクトを返します - リストを返すわけではありません。範囲オブジェクトの要素を並べ替える方法はないので、シャッフルすることはできません。

シャッフルする前にリストに変換する。

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