基本的なデータ処理を実行するために csv ファイルを解析しています。私が作業しているファイルは、次のようにフォーマットされた Web サイトへのユーザー アクティビティのログです。
User ID, Url, Number of Page Loads, Number of Interactions
ユーザー ID と URL は文字列で、ページ読み込み数とインタラクション数は整数です。
どの URL がインタラクションとページの比率が最も高いかを判断しようとしています。
私が苦労しているのは、一意の値を取得し、列から結果を集計することです。
私は次のコードを書きました:
import csv
from collections import defaultdict
fields = ["USER","URL","LOADS","ACT"]
file = csv.DictReader(open('file.csv', 'rU'), delimiter=",",fieldnames=fields)
file.next()
dict = defaultdict(int)
for i in dict:
dict[i['URL']] += int(i['LOADS'])
これはうまくいきます。一意の URL のリストと、辞書内の URL ごとの総読み込み数を返します -{ 'URL A' : 1000 , 'URL B' : 500}
問題は、url キーに複数の値を追加しようとすると、困惑することです。
for ループを次のように修正しようとしました。
for i in dict:
dict[i['URL']] += int(i['LOADS']), int(i['ACT'])
と受け取りTypeError: unsupported operand type(s) for +=: 'int' and 'tuple'
ます。2 番目の値がタプルと見なされるのはなぜですか?
だけを追加してみましたがint(i[ACT])
、うまくいきました。両方の値を同時に試したときです。
私はpython 2.6.7を使用しています。これを行う方法と、タプルと見なされる理由についてのアイデアはありますか?