0

重複の可能性:
'int' オブジェクトの取得は反復可能ではありません

だから私は、他のコードに基づいて辞書に値を追加しようとしています:

if not cat_sums.has_key(k):
        cat_sums[k] = 0
cat_sums[k] += value

辞書は次のようになります。

cat_sums =     defaultdict(<type 'list'>, {'composed': [0], 'elated': [0], 'unsure': [0], 'hostile': [0], 'tired': [0], 'depressed': [0], 'guilty': [0], 'confused': [0], 'clearheaded': [0], 'anxious': [0], 'confident': [0], 'agreeable': [0], 'energetic': [0]})

そして、私は得ています:

    cat_sums[k] += value
TypeError: 'int' object is not iterable

最初の反復では cat_sums[k] = [0] であり、[0] は整数ではなく、リストであるため、これは理にかなっています。それで、私はこれを試しました:

print cat_sums[k[0]]

それが何を出力するかを確認するには、つまり、 に置き換える必要があるかどうかを確認しますが、次のようになりcat_sums[k]ましcat_sums[k[0]]た。

[]

空のリスト。

では、すべてのキーを反復して、辞書 cat_sums 内の値を追加するにはどうすればよいでしょうか? ここで何が間違っていますか?

明確にするために、値は0以上の整数値に等しくなることに注意してください(ただし、これは変更される可能性があり、負の整数は後で許可される可能性がありますが、まだ許可されていません)

4

3 に答える 3

4

このデータ構造は少しわかりにくいです。おそらく、別のタイプの defaultdict を試す必要があります。

cat_sums=defaultdict(int)
cat_sums[k]+=value

もちろん、リストに要素を継続的に追加したい場合は、次のようにします。

cat_sums=defaultdict(list)
cat_sums[k].append(value)  #same thing as cat_sums[k]+=[value]
于 2012-07-19T21:28:03.737 に答える
2

私はあなたが使いたいとは思わないdefaultdict(list)- あなたがやりたいように見える:

dd = defaultdict(int)
for x in y:
    dd[x] += 5

余談ですif not cat_sums.has_key(k)が、Python的には - と書かれていますが、私が正しく理解していればif k not in cat_sums、 a を使用する必要はありません。defaultdict(int)

于 2012-07-19T21:29:10.463 に答える
0

リストに番号を追加しています。試す

if not cat_sums.has_key(k):
    cat_sums[k] = [0]
cat_sums[k][0] += value
于 2012-07-19T21:25:14.103 に答える