ここで手伝ってくれた機能に問題があり、理解して修正しようとしています。
これが関数です(デバッグを支援するためにコメント/印刷がスローされています)
def accumulate_by_category(word_values, cat_sums, cats):
for word, value in word_values.items():
print word
for cat in cats[word]:
print cat
#cat_sums[cat] += value
cat_sums[cat].append(value)
print cat_sums
これで、word_valuesは次のようになります。
{'a': 4, 'angry': 0, 'sad': 0, 'grateful': 0, 'happy': 0}
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]})
猫は次のようになります。
defaultdict(<type 'list'>, {'depressed': ['sad'], 'elated': ['happy', 'grateful', 'a'], 'hostile': ['angry']})
基本的に、関数が実行しようとしているのは、word_valuesの各値を取得し、それらを最終的にcat_sumsに追加することです。それは現在起こっていることではありません-何らかの理由で、どの値も追加されていません。理由を理解するのに苦労しています-しようとするとprint cat
、空白になります。しかしprint word
、私に単語のリストを与えます。理論的には、猫の猫の場合[word]は猫の各用語を表示する必要がありますが、そうではありません。
私は何が間違っているのですか?
最終的には、すべての値をcat_sumsに追加して、データベースに書き込むことができるようにします。また、これを実行するには、cat_sumsの値を返す必要がありますか?
これは私のデータベース書き込みコードです(catnumsはcat_sumsに送信される引数です):
for key in catnums:
x = catnums[key]
for value in x:
cmd = "UPDATE resulttest SET value=\"" + str(value) + "\" WHERE category=\"" + key + "\"";
c.execute(cmd)
db.commit()