2

ここで手伝ってくれた機能に問題があり、理解して修正しようとしています。

これが関数です(デバッグを支援するためにコメント/印刷がスローされています)

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()
4

2 に答える 2

1

完全にめちゃくちゃ!どういうcats[word]意味ですか?猫の場合:キーは「落ち込んでいる」、「高揚している」、「敵対的」である必要がありますが、word_valuesでは、「怒っている」、「幸せ」、「悲しい」、「感謝している」

私はいくつかの変更を加えました、うまくいけばそれはあなたが望むものです。

def accumulate_by_category(word_values, cat_sums, cats):
    for word, value in word_values.items():
        print word
        for k, v in cats.items():
            if word in v:
                print k
                if not cat_sums.has_key(k):
                    cat_sums[k] = 0
                cat_sums[k] += value
                print cat_sums
                break
于 2012-07-19T02:55:49.670 に答える
0
for cat in cats[word]

catsキー、、、などが'a'ない'angry'ため、何もしません。これはデフォルトの辞書であるため、デフォルトで空のリストになっていると思います。したがって、毎回'sad'言うのと同じです。for cat in []

追加する場合:

{'a': 4, 'angry': 0, 'sad': 0, 'grateful': 0, 'happy': 0, 'hostile': 2}

あなたは理論的にあなたが望むものを手に入れるでしょう。しかし、あなたの質問から、あなたが期待している出力が正確にどのようなものであるかは不明です。

基本的に、関数が実行しようとしているのは、の各値を取得し、word_valuesそれらを最終的にに追加することcat_sumsです。

どちらも辞書なので、それはかなり不明確です。キーが一致したときのword_values値にの値を追加するという意味ですか?cat_sums「追加」とは「追加」という意味ですか?あなたが期待している結果について正確であると、物事が簡単になります-あなたが何を意味するのかを推測するのははるかに困難です。

于 2012-07-19T02:52:04.320 に答える