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给了我一个单词列表。从理论上讲,对于 cat in cats[word] 应该提出 cat 中的每个术语,但事实并非如此。

我究竟做错了什么?

我最终只想将所有值添加到 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 回答